mcpField
E
embed-subtitles

embed-subtitles

github.com/aviz85クリエイティブ・メディア5072 回インストール16 週間前に更新
リポジトリ

embed-subtitles について

Embed Subtitles は、FFmpeg で SRT 字幕を動画に焼き込むコマンドラインスクリプトです。字幕のスタイルや位置を調整でき、RTL テキストの検出と修正にも対応します。

主な機能

  1. 01SRT 字幕を動画に焼き込み
  2. 02フォント、色、縁取り、影を調整
  3. 03字幕の位置と余白を指定
  4. 04RTL 字幕を検出して方向マークを追加
  5. 05フレームを抽出して配置を確認

活用シーン

  1. 01動画に字幕を固定表示
  2. 02字幕のスタイルと配置を調整
  3. 03アラビア語やヘブライ語の字幕を処理
  4. 04レンダリング前に字幕位置を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aviz85/claude-skills-library --skill embed-subtitles

インストール後、Claude Code で/embed-subtitlesを入力して読み込まれたか確認します。

詳細

字幕を埋め込む

FFmpeg を使用して、動画ファイルに SRT 字幕を焼き付けます。

前提条件

SRT ファイルがありませんか? まず transcribe スキルを使って、音声/動画から字幕を生成してください。

翻訳が必要ですか? 文字起こし後、SRT を読み込み、タイムスタンプを維持しながら各エントリを翻訳して、新しい SRT ファイルに書き込みます。API は不要です。

クイックスタート

cd ~/.claude/skills/embed-subtitles/scripts

# Burn SRT into video
npx ts-node embed-subtitles.ts -i video.mp4 -s subtitles.srt -o output.mp4

# Custom styling
npx ts-node embed-subtitles.ts -i video.mp4 -s subtitles.srt -o output.mp4 \
  --font-size 24 --position bottom --margin 40

# Add credit text overlay at end
npx ts-node embed-subtitles.ts -i video.mp4 -s subtitles.srt -o output.mp4 \
  --credit "Your Name" --credit-position top

オプション

オプション短縮形デフォルト説明
--input-i(必須)入力動画ファイル
--subtitles-s(必須)SRT 字幕ファイル
--output-o(必須)出力動画ファイル
--font-size20ピクセル単位のフォントサイズ
--font-nameArialフォントファミリー名
--positionbottom字幕の位置:top、center、bottom
--margin25端からのマージン(ピクセル単位)
--colorwhiteテキストの色
--outline2アウトラインの太さ
--shadow1影の深さ
--credit最後に表示するクレジットテキスト
--credit-positiontopクレジットの位置:top、bottom
--credit-duration2.5クレジットの表示時間(秒)
--extract-frame確認用に指定した秒数のフレームを抽出

位置の値

  • top - 動画の上部付近(クレジットに適しており、下部に焼き付けられたテキストを避けられます)
  • center - 動画の中央
  • bottom - 動画の下部付近(従来の字幕位置)

依存関係

  • FFmpeg(インストール済みで、PATH に含まれている必要があります)

RTL の自動検出と修正(重要)

SRT ファイルを埋め込む前に、Claude は必ず内容が RTL かどうかを確認する必要があります。

検出

SRT ファイルを読み込み、大半のテキスト行にヘブライ語/アラビア語/ペルシア語の文字が含まれているか確認します。

  • ヘブライ語の範囲:\u0590-\u05FF
  • アラビア語の範囲:\u0600-\u06FF
  • ペルシア語の追加範囲:\u0750-\u077F

RTL の内容が検出された場合は、FFmpeg に渡す前に修正を適用します。

RTL の修正

各テキスト行(インデックス番号やタイムスタンプは除く)を Unicode の方向制御文字で囲みます。

python3 -c "
import re

with open('SRT_FILE_PATH', 'r', encoding='utf-8') as f:
    content = f.read()

lines = content.split('\n')
result = []
for line in lines:
    stripped = line.strip()
    if stripped and not re.match(r'^\d+$', stripped) and not re.match(r'\d{2}:\d{2}:\d{2}', stripped):
        line = '\u202B' + line + '\u202C'
    result.append(line)

with open('SRT_FILE_PATH', 'w', encoding='utf-8') as f:
    f.write('\n'.join(result))
"
  • U+202B(RLE - 右から左への埋め込み):段落の方向を RTL に強制します
  • U+202C(PDF - ポップ方向書式):埋め込みを閉じます

これにより修正される問題: 行頭の英単語、左右が逆になるピリオドやカンマ、双方向テキストの混在。

適用する場合

Claude は SRT の内容を適切に分析する必要があります。

  • テキストの大半がヘブライ語/アラビア語/ペルシア語の場合 → RTL の修正を適用
  • 混在していても、主に RTL の場合 → RTL の修正を適用
  • LTR(英語、スペイン語など)の場合 → 適用しない
  • ユーザーによるフラグ指定は不要です。自動的に検出します

注意事項

  • アラビア語のクレジットには、FFmpeg の drawtext に RTL の制限があるため、英語のテキストを使用してください
  • 最終レンダリングの前に、--extract-frame を使って字幕の位置を確認してください

コメント