Show countdown with drawtext
Add countdown timer with drawtext
FFmpegのdrawtextでカウントダウンタイマーをつける
FFmpegでプレビュー
ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='%{eif\:11-t\:d}':fontcolor=white:fontsize=24:x=w-tw-20:y=th:box=1:boxcolor=black@0.4:boxborderw=10:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Show Countdown With Drawtext':fontcolor=white:fontsize=24:x=20:y=(h-th)-20,format=yuv420p" -f matroska - | ffplay -i -
ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='%{eif\:11-t\:d}':fontcolor=white:fontsize=24:x=w-tw-20:y=th:box=1:boxcolor=black@0.4:boxborderw=10:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Show Countdown With Drawtext':fontcolor=white:fontsize=24:x=20:y=(h-th)-20,format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"
カウントダウンタイマーのコマンド 秒タイプ
:text='%{eif\:11-t\:d}'
format=yuv444p,drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf'でフォーマット形式をyuv444pに変換してカウントダウンタイマーのフォントスタイルを指定しています。
:text='%{eif\:11-t\:d}'でカウントダウンタイマーをを設定しています。
:fontcolor=white:fontsize=24:x=w-tw-20:y=thでカウントダウンタイマーの、フォントカラーとフォントサイズを指定して表示位置を設定しています。
:boxcolor=black@0.4:boxborderw=10:enable='between(t,0,10)'でカウントダウンタイマーの背景となるboxを透過して幅を設定後、カウントダウンタイマーとboxの表示時間を設定しています。
drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text='Show Countdown With Drawtext'
:fontcolor=white:fontsize=24:x=20:y=(h-th)-20,format=yuv420pでテロップのフォントスタイルと文字、フォントカラーとフォントサイズを指定してテキストの位置を設定して他のデバイスでも見れるようにformat=yuv420pで出力を最適化しています。
テキストの色を時間指定で変える
FFmpegでプレビュー
ffmpeg -i "input.mp4" -filter_complex "scale=480:-1:flags=lanczos+accurate_rnd,format=yuv444p,drawbox=x=(iw-w)-8:y=10:w=36:h=38:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text=%{eif\\:mod(11-t\,60)\\:d}:fontcolor_expr=%{eif\\: if(lt(t\,7)\, 0xffffff\, 0xff0000) \\: x}:fontsize=30:x='(w-tw)-20':y='16':enable='between(t,0,10)',drawbox=y=ih*0.7:w=iw:h=56:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text='Show Text Fontcolor Automatically':fontcolor_expr=%{eif\\: if(lt(t\,7)\, 0xffffff\, 0xff9999) \\: x}:fontsize=30:x='(w-tw)-(w-tw)/2':y='(h-th)/1.17':enable='between(t,0,10)',format=yuv420p" -f matroska - | ffplay -i -
ffmpeg -i "input.mp4" -filter_complex "scale=480:-1:flags=lanczos+accurate_rnd,format=yuv444p,drawbox=x=(iw-w)-8:y=10:w=36:h=38:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text=%{eif\\:mod(11-t\,60)\\:d}:fontcolor_expr=%{eif\\: if(lt(t\,7)\, 0xffffff\, 0xff0000) \\: x}:fontsize=30:x='(w-tw)-20':y='16':enable='between(t,0,10)',drawbox=y=ih*0.7:w=iw:h=56:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text='Show Text Fontcolor Automatically':fontcolor_expr=%{eif\\: if(lt(t\,7)\, 0xffffff\, 0xff9999) \\: x}:fontsize=30:x='(w-tw)-(w-tw)/2':y='(h-th)/1.17':enable='between(t,0,10)',format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"
テキストの色を時間指定で変えるコマンド
:fontcolor_expr=%{eif\\:if(lt(t\,7)\,0xffffff\,0xff0000)\\:x}
テキストの色をフェードインする
FFmpegでプレビュー
ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=(iw-w)-8:y=10:w=36:h=38:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text=%{eif\\:mod(11-t\,60)\\:d}:fontcolor_expr='ffffff%{eif\:clip(1+(255*t/4)\,0\,255)\:x\:2}':fontsize=30:x='(w-tw)-20':y='16':enable='between(t,0,10)',drawbox=y=ih*0.7:w=iw:h=56:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text='Show Text Fontcolor Automatically':fontcolor_expr='ffffff%{eif\:clip(1+(255*t/4)\,0\,255)\:x\:2}':fontsize=30:x='(w-tw)-(w-tw)/2':y='(h-th)/1.17':enable='between(t,0,10)',format=yuv420p" -f matroska - | ffplay -i -
ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=(iw-w)-8:y=10:w=36:h=38:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text=%{eif\\:mod(11-t\,60)\\:d}:fontcolor_expr='ffffff%{eif\:clip(1+(255*t/4)\,0\,255)\:x\:2}':fontsize=30:x='(w-tw)-20':y='16':enable='between(t,0,10)',drawbox=y=ih*0.7:w=iw:h=56:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text='Show Text Fontcolor Automatically':fontcolor_expr='ffffff%{eif\:clip(1+(255*t/4)\,0\,255)\:x\:2}':fontsize=30:x='(w-tw)-(w-tw)/2':y='(h-th)/1.17':enable='between(t,0,10)',format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"
テキストの色をフェードインする(ボーダーを付けた場合)
FFmpegでプレビュー
ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=(iw-w)-8:y=10:w=36:h=38:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':bordercolor='black':borderw='1':text=%{eif\\:mod(11-t\,60)\\:d}:fontcolor_expr='ffffff%{eif\:clip(1+(255*t/4)\,0\,255)\:x\:2}':fontsize=30:x='(w-tw)-20':y='16':enable='between(t,0,10)',drawbox=y=ih*0.7:w=iw:h=56:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':bordercolor='black':borderw='1':text='Show Text Fontcolor Automatically':fontcolor_expr='ffffff%{eif\:clip(1+(255*t/4)\,0\,255)\:x\:2}':fontsize=30:x='(w-tw)-(w-tw)/2':y='(h-th)/1.17':enable='between(t,0,10)',format=yuv420p" -f matroska - | ffplay -i -
ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=(iw-w)-8:y=10:w=36:h=38:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':bordercolor='black':borderw='1':text=%{eif\\:mod(11-t\,60)\\:d}:fontcolor_expr='ffffff%{eif\:clip(1+(255*t/4)\,0\,255)\:x\:2}':fontsize=30:x='(w-tw)-20':y='16':enable='between(t,0,10)',drawbox=y=ih*0.7:w=iw:h=56:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':bordercolor='black':borderw='1':text='Show Text Fontcolor Automatically':fontcolor_expr='ffffff%{eif\:clip(1+(255*t/4)\,0\,255)\:x\:2}':fontsize=30:x='(w-tw)-(w-tw)/2':y='(h-th)/1.17':enable='between(t,0,10)',format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"
テキストの色をフェードインするコマンド
:fontcolor_expr='ffffff%{eif\:clip(1+(255*t/4)\,0\,255)\:x\:2}'
ボーダー(枠線)の色は変化せず、フォントカラーの初期値はボーダーカラーに設定した色がが透過された状態でフェードインする
フォントカラーをランダムに変える
FFmpegでプレビュー
ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=(iw-w)-8:y=10:w=36:h=38:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text=%{eif\\:mod(11-t\,60)\\:d}:fontcolor_expr=random:fontsize=30:x='(w-tw)-20':y='16':enable='between(t,0,10)',drawbox=y=ih*0.7:w=iw:h=56:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text='Randomly Change The Fontcolor':fontcolor_expr=random:fontsize=30:x='(w-tw)-(w-tw)/2':y='(h-th)/1.17':enable='between(t,0,10)',format=yuv420p" -f matroska - | ffplay -i -
ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=(iw-w)-8:y=10:w=36:h=38:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text=%{eif\\:mod(11-t\,60)\\:d}:fontcolor_expr=random:fontsize=30:x='(w-tw)-20':y='16':enable='between(t,0,10)',drawbox=y=ih*0.7:w=iw:h=56:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text='Randomly Change The Fontcolor':fontcolor_expr=random:fontsize=30:x='(w-tw)-(w-tw)/2':y='(h-th)/1.17':enable='between(t,0,10)',format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"
フォントカラーをランダムに変えるコマンド
:fontcolor_expr=random
動画をリサイズしてカウントダウンタイマーとテキストを表示する
FFmpegでプレビュー
ffmpeg -i "input.mp4" -filter_complex "testsrc[t];[0]scale=480:-1:flags=lanczos+accurate_rnd[a];[t]trim=01:10,reverse,setpts=PTS-STARTPTS,crop=61:52:224:94,lutrgb=r=256:g=256,colorkey=yellow[b];[a][b]overlay=(W-w)-30:20:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Add Countdown Timer With Testsrc':fontcolor=white:fontsize=24:x=20:y=(h-th)-20:enable='between(t,0,10)'" -f matroska - | ffplay -i -
ffmpeg -i "input.mp4" -filter_complex "testsrc[t];[0]scale=480:-1:flags=lanczos+accurate_rnd[a];[t]trim=01:10,reverse,setpts=PTS-STARTPTS,crop=61:52:224:94,lutrgb=r=256:g=256,colorkey=yellow[b];[a][b]overlay=(W-w)-30:20:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Add Countdown Timer With Testsrc':fontcolor=white:fontsize=24:x=20:y=(h-th)-20:enable='between(t,0,10)'" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"
testsrc[t]でタイマー付きのtestsrcフィルターを生成して[t]という任意の名前つけています。
[0]scale=480:-1:flags=lanczos+accurate_rnd[a]で入力した動画を拡大縮小のアルゴリズムオプションにlanczos+accurate_rndを指定してアスペクト比を保ったままリサイズして[a]という任意の名前つけています。[0]は[0:v]の略(1番目に入力した動画の映像部分)。
[t]trim=00:66,reverse,setpts=PTS-STARTPTS,
crop=61:52:224:94,lutrgb=r=256:g=256,colorkey=yellow[b]でtestsrcの再生時間==スタート秒とエンド秒、逆再生フィルターreverseを設定後、再生時刻の情報(PTS, presentation timestamp)を設定してtestsrcがカウンタータイマー部分だけになるようにクロップして背景部分を黄色にした後、透過して[b]という任意の名前つけています。
[a][b]overlay=(W-w)-20:(H-h)-20:enable='between(t,5,66)'でクロップしてカウンタータイマー部分のみになったtestsrcを入力動画への貼り付け位置と合成時間の指定をして入力動画と合成しています。
drawtext=fontfile='C\:/WINDOWS/Fonts/impact.ttf':text='Add Countdown Timer With Testsrc'
:fontcolor=white:fontsize=24:x=20:y=(h-th)-20:enable='between(t,0,10)'
でテロップのフォントスタイルと文字、フォントカラーとフォントサイズ、表示位置と表示時間を指定しています。
タイマーを10秒から99秒の間で設定する場合はcrop=61:52:224:94になります。
min:10sec max:99sec
crop=61:52:224:94
タイマーを100秒から999秒の間で設定する場合はcrop=93:52:192:94になります。
min:100sec max:999sec
crop=93:52:192:94
タイマーを1000秒から9999秒の間で設定する場合はcrop=125:52:160:94になります。
min:1000sec max:9999sec
crop=125:52:160:94
タイマーを0秒から9秒の間で設定する場合は[t]trim=01:10,reverse,setpts=PTS-STARTPTS,
crop=61:52:224:94,lutrgb=r=256:g=256,colorkey=yellow[b];が[t]trim=01:09,reverse,
setpts=PTS-STARTPTS,crop=29:52:256:94,colorkey=black[b];になります。trim=01:09の部分はセットする秒数によって任意で変えてください。タイマー部分の背景色(黒)を残したい場合は[t]trim=01:09,reverse,setpts=PTS-STARTPTS,crop=29:52:256:94[b];になります。
min:0sec max:9sec
crop=29:52:256:94
Add Countdown Timer With ver.Testsrc2
動画をリサイズしてカウントダウンタイマーとテキストを表示する ver.testsrc2
FFmpegでプレビュー
ffmpeg -i "input.mp4" -filter_complex "testsrc2[t];[t]trim=00:10,reverse,setpts=PTS-STARTPTS,crop=101:37:2:2[a];[0]split[b][c];[b]scale=480:-1:flags=lanczos+accurate_rnd[d];[c]scale=480:-1:flags=lanczos+accurate_rnd[e];[d][a]overlay=10:10:enable='between(t,0,10)'[f];[e][f]blend=c0_opacity=0.5,drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Add Countdown Timer With Testsrc2':fontcolor=white:fontsize=24:x=20:y=(h-th)-20:enable='between(t,0,10)'" -f matroska - | ffplay -i -
ffmpeg -i "input.mp4" -filter_complex "testsrc2[t];[t]trim=00:10,reverse,setpts=PTS-STARTPTS,crop=101:37:2:2[a];[0]split[b][c];[b]scale=480:-1:flags=lanczos+accurate_rnd[d];[c]scale=480:-1:flags=lanczos+accurate_rnd[e];[d][a]overlay=10:10:enable='between(t,0,10)'[f];[e][f]blend=c0_opacity=0.5,drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Add Countdown Timer With Testsrc2':fontcolor=white:fontsize=24:x=20:y=(h-th)-20:enable='between(t,0,10)'" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"
testsrc2のタイマー部分をクロップするコマンド
crop=101:37:2:2
動画をリサイズしてカウントダウンタイマーとテキストを表示する ver.testsrc2.other
FFmpegでプレビュー
ffmpeg -i "input.mp4" -filter_complex "testsrc2[t];[t]trim=00:10,reverse,setpts=PTS-STARTPTS,crop=101:19:2:2[a];[0]split[b][c];[b]scale=480:-1:flags=lanczos+accurate_rnd[d];[c]scale=480:-1:flags=lanczos+accurate_rnd[e];[d][a]overlay=10:10:enable='between(t,0,10)'[f];[e][f]blend=c0_opacity=0.5,drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Add Countdown Timer With Testsrc2':fontcolor=white:fontsize=24:x=20:y=(h-th)-20:enable='between(t,0,10)'" -f matroska - | ffplay -i -
ffmpeg -i "input.mp4" -filter_complex "testsrc2[t];[t]trim=00:10,reverse,setpts=PTS-STARTPTS,crop=101:19:2:2[a];[0]split[b][c];[b]scale=480:-1:flags=lanczos+accurate_rnd[d];[c]scale=480:-1:flags=lanczos+accurate_rnd[e];[d][a]overlay=10:10:enable='between(t,0,10)'[f];[e][f]blend=c0_opacity=0.5,drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Add Countdown Timer With Testsrc2':fontcolor=white:fontsize=24:x=20:y=(h-th)-20:enable='between(t,0,10)'" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"
testsrc2のタイマー部分をクロップするコマンド other ver.
crop=101:19:2:2