Askthewind’s diary

個人的なメモ

FFmpegでテキストにテレビ放送局風の半透明のボックスを付ける

Add opacity of drawbox like a TV station to text

 

TV station style telop

f:id:Askthewind:20181216084549g:plain

テレビ局風のテロップ

FFmpegでプレビュー

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,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/Alial.ttf':text='NHK CREATIVE LIBRARY':fontcolor=white:fontsize=16:x=25:y=(h-th)/1.25:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Japan Broadcasting Corporation':fontcolor=white:fontsize=12:x=25:y=(h-th)/1.17:enable='between(t,0,10)',format=yuv420p" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,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/Alial.ttf':text='NHK CREATIVE LIBRARY':fontcolor=white:fontsize=16:x=25:y=(h-th)/1.25:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Japan Broadcasting Corporation':fontcolor=white:fontsize=12:x=25:y=(h-th)/1.17:enable='between(t,0,10)',format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"

format=yuv444p,drawbox=y=ih*0.7:w=iw:h=56:t=fill:color=black@0.4:enable='between(t,0,10)'でフォーマット形式をyuv444pに変換してテキストの背景となる黒のboxを生成した後、生成したboxのサイズ、透過度、表示時間を指定しています。フォーマット形式をyuv444pに変換するとdrawboxの色の領域の幅が改善されます。

drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='NHK CREATIVE LIBRARY'
:fontcolor=white:fontsize=16
:x=25:y=(h-th)/1.25:enable='between(t,0,10)',で一行目のテロップのフォントスタイルと文字、フォントカラーとフォントサイズを指定してテキストの位置と表示時間を設定しています。

drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='Japan Broadcasting Corporation'
:fontcolor=white:fontsize=12
:x=25:y=(h-th)/1.17:enable='between(t,0,10)',format=yuv420pで二行目のテロップのフォントスタイルと文字、フォントカラーとフォントサイズを指定してテキストの位置と表示時間を設定して他のデバイスでも見れるようにformat=yuv420pで出力を最適化しています。

 

Text in center opacity of drawbox

f:id:Askthewind:20181216084556g:plain

半透明のボックスを付けてテキストを中央へ配置

FFmpegでプレビュー

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=y=ih*0.7:w=iw:h=36:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='NHK CREATIVE LIBRARY':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h-th)/1.27:enable='between(t,0,10)',format=yuv420p" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=y=ih*0.7:w=iw:h=36:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='NHK CREATIVE LIBRARY':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h-th)/1.27:enable='between(t,0,10)',format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"

 

Text from upperright to upperleft in opacity of drawbox

f:id:Askthewind:20181216083854g:plain

半透明のボックスを付けてテキストを右上から左上へスクロール

FFmpegでプレビュー

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=(iw-w):w=iw:h=30:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='NHK CREATIVE LIBRARY':fontcolor=white:fontsize=24:x=w-mod(2*n\,w+tw):y=5:enable='between(t,0,10)',format=yuv420p" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=(iw-w):w=iw:h=30:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='NHK CREATIVE LIBRARY':fontcolor=white:fontsize=24:x=w-mod(2*n\,w+tw):y=5:enable='between(t,0,10)',format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"

 

テキストを右上から左上へループさせるコマンド

:x=w-mod(n\,w+tw):y
 
Text from lowerright to lowerleft in opacity of drawbox

f:id:Askthewind:20181216084003g:plain

半透明のボックスを付けてテキストを右下から左下へスクロール

FFmpegでプレビュー

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=y=(ih-h):w=iw:h=30:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='NHK CREATIVE LIBRARY':fontcolor=white:fontsize=24:x=w-mod(2*n\,w+tw):y=(h-th)-5:enable='between(t,0,10)',format=yuv420p" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=y=(ih-h):w=iw:h=30:t=fill:color=black@0.4:enable='between(t,0,10)',drawtext=fontfile='C\:/WINDOWS/Fonts/:Alial.ttf'text='NHK CREATIVE LIBRARY':fontcolor=white:fontsize=24:x=w-mod(2*n\,w+tw):y=(h-th)-5:enable='between(t,0,10)',format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"

 

テキストを右下から左下へループさせるコマンド

:x=w-mod(n\,w+tw):y=(h-th)
 
Logo in opacity of drawbox

f:id:Askthewind:20181216083757g:plain

FFmpegで透過ロゴに半透明のボックスを付けてテキストを表示

FFmpegでプレビュー

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=16:y=4:w=70:h=54:t=fill:color=black@0.3,drawtext=fontfile='C\:/WINDOWS/Fonts/Alial.ttf':text='NHK Creative Library':fontcolor=white:fontsize=24:x=20:y=(h-th-20),format=yuv420p" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i "input.mp4" -filter_complex "format=yuv444p,drawbox=x=16:y=4:w=70:h=54:t=fill:color=black@0.3,drawtext=fontfile='C\:/WINDOWS/Fonts/=Alial.ttf':text='NHK Creative Library':fontcolor=white:fontsize=24:x=20:y=(h-th)-20,format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output4.mp4"
 
 
使用した動画素材はNHKクリエイティブライブラリー様からお借りしました。

www.nhk.or.jp

 

参考にさせていただきました。Special Thanks

video.stackexchange.com
video.stackexchange.com

Also see

www.ffmpeg.org