embed-subtitles について
Embed Subtitles は、FFmpeg で SRT 字幕を動画に焼き込むコマンドラインスクリプトです。字幕のスタイルや位置を調整でき、RTL テキストの検出と修正にも対応します。
主な機能
- 01SRT 字幕を動画に焼き込み
- 02フォント、色、縁取り、影を調整
- 03字幕の位置と余白を指定
- 04RTL 字幕を検出して方向マークを追加
- 05フレームを抽出して配置を確認
活用シーン
- 01動画に字幕を固定表示
- 02字幕のスタイルと配置を調整
- 03アラビア語やヘブライ語の字幕を処理
- 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-size | 20 | ピクセル単位のフォントサイズ | |
--font-name | Arial | フォントファミリー名 | |
--position | bottom | 字幕の位置:top、center、bottom | |
--margin | 25 | 端からのマージン(ピクセル単位) | |
--color | white | テキストの色 | |
--outline | 2 | アウトラインの太さ | |
--shadow | 1 | 影の深さ | |
--credit | 最後に表示するクレジットテキスト | ||
--credit-position | top | クレジットの位置:top、bottom | |
--credit-duration | 2.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を使って字幕の位置を確認してください
コメント
Markdown 対応