この記事でわかること

  • drawtext フィルタで動画にテキストを描画するコマンド
  • フォント・サイズ・色・位置の指定方法
  • タイムコードや動的テキストの表示方法
  • スクロールテロップの作り方

テスト済みバージョン: FFmpeg 6.1(ubuntu-latest / CI検証済み)
対象 OS: Windows / macOS / Linux


基本コマンド

左上にテキストを表示する

ffmpeg -i input.mp4 -vf "drawtext=text='Hello World':x=10:y=10:fontsize=36:fontcolor=white" output.mp4

中央に表示する

ffmpeg -i input.mp4 \
  -vf "drawtext=text='CENTER':x=(w-text_w)/2:y=(h-text_h)/2:fontsize=48:fontcolor=white" \
  output.mp4

wh は映像の幅・高さ、text_wtext_h はテキストの幅・高さです。


主要パラメータ一覧

パラメータ説明
text表示するテキストtext='Hello'
fontfileフォントファイルのパスfontfile=/path/to/font.ttf
fontsizeフォントサイズ(ピクセル)fontsize=36
fontcolorテキスト色(名前またはHEX)fontcolor=white / fontcolor=0xFFFFFF
x / y表示位置x=10:y=10
shadowcolor影の色shadowcolor=black@0.5
shadowx / shadowy影のオフセットshadowx=2:shadowy=2
box背景ボックスbox=1
boxcolor背景ボックスの色boxcolor=black@0.5
boxborderw背景ボックスのパディングboxborderw=5

フォントの指定

ffmpeg -i input.mp4 \
  -vf "drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf:text='FFmpeg':fontsize=40:fontcolor=yellow" \
  output.mp4

日本語テキストを表示する場合は日本語対応フォントを指定してください。

ffmpeg -i input.mp4 \
  -vf "drawtext=fontfile=/path/to/NotoSansCJKjp-Regular.otf:text='日本語テキスト':fontsize=36:fontcolor=white" \
  output.mp4

影付きテキスト

ffmpeg -i input.mp4 \
  -vf "drawtext=text='Shadow Text':x=50:y=50:fontsize=40:fontcolor=white:shadowcolor=black:shadowx=3:shadowy=3" \
  output.mp4

背景ボックス付きテキスト

ffmpeg -i input.mp4 \
  -vf "drawtext=text='BOX TEXT':x=20:y=20:fontsize=36:fontcolor=white:box=1:boxcolor=black@0.6:boxborderw=8" \
  output.mp4

boxcolor=black@0.6 は 60% 透明度の黒背景です。


タイムコードを表示する

ffmpeg -i input.mp4 \
  -vf "drawtext=text='%{pts\\:hms}':x=w-text_w-10:y=h-text_h-10:fontsize=24:fontcolor=white:box=1:boxcolor=black@0.5" \
  output.mp4

%{pts\\:hms}HH:MM:SS.mmm 形式のタイムコードを表示します。シェルでのエスケープに注意してください(\\: が必要)。


フレーム番号を表示する

ffmpeg -i input.mp4 \
  -vf "drawtext=text='Frame %{n}':x=10:y=10:fontsize=24:fontcolor=yellow" \
  output.mp4

スクロールテロップ(右から左へ流れるテキスト)

ffmpeg -i input.mp4 \
  -vf "drawtext=text='スクロールテキストのサンプルです':x=w-200*t:y=h-60:fontsize=32:fontcolor=white" \
  output.mp4

x=w-200*t で時間 t とともに左方向に移動します。速度は係数(200)で調整します。


複数テキストを重ねる

ffmpeg -i input.mp4 \
  -vf "drawtext=text='Title':x=(w-text_w)/2:y=30:fontsize=48:fontcolor=white, \
       drawtext=text='Subtitle':x=(w-text_w)/2:y=90:fontsize=28:fontcolor=yellow" \
  output.mp4

カンマで複数の drawtext を連結できます。


テキストファイルから読み込む

ffmpeg -i input.mp4 \
  -vf "drawtext=textfile=caption.txt:x=10:y=10:fontsize=28:fontcolor=white" \
  output.mp4

text= の代わりに textfile= でテキストファイルを指定できます。


位置指定の便利な変数

変数意味
w映像の幅
h映像の高さ
text_w描画テキストの幅
text_h描画テキストの高さ
t現在の時刻(秒)
nフレーム番号

注意点

  • drawtextlibfreetype が必要です。通常の FFmpeg ビルドには含まれています。
  • 日本語・中国語などの多バイト文字は UTF-8 でエンコードされたフォントファイルが必要です。
  • テキストが映像外にはみ出しても自動的にクリップされます(エラーにはなりません)。
  • シェルでの特殊文字のエスケープに注意してください(:\\:''\''など)。

関連フィルタ

  • drawbox — 矩形の描画
  • subtitles — SRTファイルから字幕を焼き込む
  • ass — ASSスタイル字幕の焼き込み

関連リソース

よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。

FFmpeg チートシート