ffmpeg-karaoke-animated-text について
FFmpegでカラオケ字幕やアニメーション文字を作るための、動画制作者向けスキルです。ASSとdrawtextの選び方、コマンド例、時間単位を解説します。
主な機能
- 01ASSによるカラオケ字幕効果
- 02drawtextによる動的な文字表示
- 03ASSとdrawtextの使い分け
- 04センチ秒・ミリ秒・秒の区別
- 05FFmpegのコマンドと手順
活用シーン
- 01単語ごとに色が変わる歌詞字幕の作成
- 02スクロールクレジットやローワーサードの追加
- 03タイプライター文字、タイトル、カウントダウンの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill ffmpeg-karaoke-animated-textインストール後、Claude Code で/ffmpeg-karaoke-animated-textを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/drawtext-animation-recipes.mdkaraoke-ass-patterns.mdscrolling-credits-and-expressions.md詳細
重要なガイドライン
Windows のファイルパス要件
必須:Windows ではファイルパスに必ずバックスラッシュを使用してください
Windows で Edit または Write ツールを使用する場合、ファイルパスにはスラッシュ(/)ではなく、必ずバックスラッシュ(\)を使用してください。
FFmpeg のカラオケ字幕とアニメーションテキスト
カラオケ字幕、キネティックタイポグラフィ、スクロールするクレジット、アニメーション付きのローワーサード、タイプライター風テキスト、タイマー、動的なテキストオーバーレイには、このスキルを使用してください。回答は実用的なものにしてください。ASS と drawtext のどちらが適切かを判断し、そのままコピーして使えるコマンドまたは ASS のスニペットを提示して、タイミングの単位も明示してください。
クイックリファレンス
| 効果 | パターン |
|---|---|
| カラオケ ASS | ASS 形式を使用し、タイミングタグには \k、\kf、または \ko を指定します |
| カラオケ字幕を映像に焼き込む | ffmpeg -i input.mp4 -vf "ass=karaoke.ass" -c:v libx264 -crf 18 -c:a copy output.mp4 |
| スクロールするクレジット | -vf "drawtext=textfile=credits.txt:y=h-80*t" |
| タイプライター風テキスト | drawtext のレイヤーを enable='gte(t,...)' で順次表示します |
| テキストのフェードイン | -vf "drawtext=text='Title':alpha='min(1,t/2)'" |
| バウンスするテキスト | -vf "drawtext=text='Bounce':y='h/2+50*sin(t*5)'" |
| 移動するテキスト | -vf "drawtext=text='Move':x='w-mod(t*100,w+tw)'" |
| 回転 | ASS(\frz、\frx、\fry)を使用します。drawtext は標準ではテキストを回転できません |
このスキルを使用する場面
アニメーションテキストやカラオケ字幕には、次の用途で使用してください。
- カラオケ風のハイライト付きミュージックビデオの歌詞
- 映画風のスクロールするクレジット
- アニメーション付きのタイトルとローワーサード
- タイプライター風のテキスト表示
- キネティックタイポグラフィと単語のポップ表示
- カウントダウンタイマー、ストップウォッチ、フレームカウンター、タイムコードのオーバーレイ
- 複数行のテキストと、テキストファイルを使ったオーバーレイ
ツールの選択:ASS と drawtext
| 必要な処理 | 最適なツール | 理由 |
|---|---|---|
| 単語や音節のカラオケハイライト | ASS | \k、\kf、\ko をネイティブにサポートしています |
| 縁取り、グロー、回転を使ったスタイル付き字幕 | ASS | 豊富な字幕スタイルと変形タグを利用できます |
| シンプルなテキストオーバーレイ | drawtext | 高速で直接使える FFmpeg フィルターです |
| タイムコード、フレーム番号、メタデータのテキスト | drawtext | 変数展開が組み込まれています |
| スクロールするクレジットやニュースティッカー | drawtext | 位置の式を簡単に指定できます |
| 単語ごとのキネティックキャプション | ASS または複数の drawtext レイヤー | 回転や拡大縮小には ASS のほうが簡単で、数式による動きには drawtext が直接使えます |
重要:ASS の時間単位リファレンス
ASS では異なる 2 種類の時間単位が使われます。よくある不具合の原因です。 カラオケタグではセンチ秒、ASS のアニメーションタグではミリ秒、FFmpeg の drawtext 式では秒を使います。
カラオケタグ=センチ秒(1/100 秒)
| タグ | 単位 | 例 | 継続時間 |
|---|---|---|---|
\k | センチ秒 | {\k50} | 0.5 秒 |
\kf | センチ秒 | {\kf100} | 1.0 秒 |
\ko | センチ秒 | {\ko25} | 0.25 秒 |
換算:秒 * 100 = センチ秒。
アニメーションタグ=ミリ秒(1/1000 秒)
| タグ | 単位 | 例 | 継続時間 |
|---|---|---|---|
\t(t1,t2,...) | ミリ秒 | \t(0,500,...) | 0~500ms のアニメーション |
\fad(in,out) | ミリ秒 | \fad(200,300) | 200ms でフェードイン、300ms でフェードアウト |
\move(x1,y1,x2,y2,t1,t2) | ミリ秒 | \move(0,0,100,100,0,1000) | 1 秒間の移動 |
換算:秒 * 1000 = ミリ秒。
FFmpeg の drawtext=秒
| 式 | 単位 | 例 |
|---|---|---|
t | 秒 | t=2.5 は 2.5 秒を意味します |
enable='between(t,0,3)' | 秒 | 0~3 秒の間に表示されます |
alpha='min(1,t/2)' | 秒 | 2 秒かけてフェードします |
よくある間違い
; WRONG - mixing units:
Dialogue: 0,0:00:00.00,0:00:02.00,Style,,0,0,0,,{\k100\t(0,100,...)}Word
; {\k100} = 1 second, but \t(0,100,...) = 0.1 seconds
; CORRECT - matched duration:
Dialogue: 0,0:00:00.00,0:00:02.00,Style,,0,0,0,,{\k100\t(0,1000,...)}Word
時間単位の完全なリファレンスについては、ffmpeg-animation-timing-reference を使用してください。
カラオケの基本パターン
[Script Info]
ScriptType: v4.00+
PlayResX: 1920
PlayResY: 1080
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Karaoke,Arial,72,&H00FFFFFF,&H000000FF,&H00000000,&H80000000,1,0,0,0,100,100,0,0,1,3,2,2,10,10,50,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:05.00,Karaoke,,0,0,0,,{\k50}Twinkle {\k50}twinkle {\k50}little {\k50}star
映像に焼き込む:
ffmpeg -i input.mp4 \
-vf "ass=karaoke.ass" \
-c:v libx264 -crf 18 -c:a copy \
output_karaoke.mp4
高度なスタイル、ネオン/グラデーションのカラオケ字幕、文字ごとのタイミング、アニメーション付きのカラオケ変形については、references/karaoke-ass-patterns.md を参照してください。
drawtext のコアパターン
# Fade in title over 2 seconds
ffmpeg -i input.mp4 \
-vf "drawtext=text='Title':fontsize=100:fontcolor=white:x=(w-tw)/2:y=(h-th)/2:alpha='min(1,t/2)'" \
output.mp4
# Vertical bounce
ffmpeg -i input.mp4 \
-vf "drawtext=text='BOUNCE':fontsize=80:fontcolor=yellow:x=(w-tw)/2:y='(h-th)/2+50*sin(t*5)'" \
bounce.mp4
# Scroll credits upward at 80px/sec
ffmpeg -i input.mp4 \
-vf "drawtext=textfile=credits.txt:fontsize=48:fontcolor=white:x=(w-tw)/2:y=h-80*t" \
-c:v libx264 -crf 18 output.mp4
スプリング/弾性/揺れの数式、タイプライター効果、ローワーサード、カウントダウン、ストップウォッチ、メタデータのオーバーレイ、複数行テキストについては、references/drawtext-animation-recipes.md を参照してください。
ワークフロー
- ツール選択表を使って、ASS または drawtext を選択します。
- タグや式を記述する前に、タイミングの単位を確認します。
- 必要に応じて入力をプローブし(
ffprobe)、長さ、フレームレート、解像度を確認します。 - テキストを焼き込むときは、出力エンコーディングを明示的に設定します(
-c:v libx264 -crf 18。互換性がある場合に限り、音声をコピーします)。 - ミュージックビデオやエンドロール全体をレンダリングする前に、短いテストレンダリングを行います(
-ss、-t)。 - 読みやすさを確認します。カラオケは約30ms以内に単語と同期させ、字幕には十分な表示時間を確保し、スクロールするクレジットは読める速さで移動させます。
リファレンス一覧
references/karaoke-ass-patterns.md- ASS カラオケの基本、\k/\kf/\ko、BPM タイミング、タグの選択、ネオン/グラデーションスタイル、文字単位のカラオケ、ASS のカラー形式、アニメーション付きカラオケ効果。references/drawtext-animation-recipes.md- スプリングバウンス、弾性オーバーシュート、イージングの近似、揺れ/ぐらつき、パルス、ワイプ、タイプライター、フェード、テキストの移動、キネティックタイポグラフィ、ローワーサード、カウントダウン、ストップウォッチ、動的変数、複数行テキスト。references/scrolling-credits-and-expressions.md- 音楽/教育/クレジットのタイミング、縦方向のクレジット、横方向のティッカー、ASS の回転の回避策、drawtextの変数と式のクックブック。
関連スキル
ffmpeg-animation-timing-reference- タイミングの単位、字幕の表示時間、イージング、同期の許容誤差ffmpeg-captions-subtitles- 字幕の基礎、抽出、焼き込み、スタイリングffmpeg-kinetic-captions- 単語単位でポップ/バウンス/拡大する字幕効果viral-video-animated-captions- ソーシャル動画向け字幕テンプレートffmpeg-shapes-graphics- ボックス、背景、グラフィックのオーバーレイffmpeg-transitions-effects- xfade と動画トランジション