Askthewind’s diary

個人的なメモ

FFmpegのdrawtextでカウントダウンタイマーをつける

Show countdown with drawtext

 

Add countdown timer with drawtext

f:id:Askthewind:20181216214815g:plain

 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エンコード

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}'
続きを読む

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"
続きを読む

FFmpegでpng画像1枚からズームするgifアニメーションを作る

Creating a GIF animation from one PNG

 

From upper left

f:id:Askthewind:20181214214613g:plain

左上からズームアップ(デフォルト)

ffmpegでプレビュー

ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d='25*4':s='480*270',split[a],palettegen,[a]paletteuse" -f matroska - | ffplay -i -

ffmpegでコンバート

ffmpeg -i input.png -filter_complex "zoompan=z='zoom+0.0015':d='25*4':s='480*270',split[a],palettegen,[a]paletteuse" "output.gif"
 自分が忘れないためのコメント

画像をズームインするにはzoompanフィルタを使用します。zoompanフィルタでは、フレームごとに評価し、ズームインする距離を設定するzオプションが使用できます。

zoompan=z='zoom+0.0015'で各フレームの前のズーム値に0.0015を加えて15%拡大アニメーションを設定します。

:d='25*4'でエフェクトの持続時間(デフォルトの25フレーム/秒で4秒)の指定

:s='480*270'で出力サイズ(width*heigt)を指定します。

split[a],palettegen,[a]paletteuseでパレットを最適化しています。

続きを読む

FFmpegで動画におしゃれなカーテンエフェクトをつける

 Add fashionable curtain(barn door) and circle wipe effects

 

Curtains, unveiled Horizontal

f:id:Askthewind:20181213095501g:plain

真ん中から左右へフェードアウトするカーテンエフェクト

FFmpegでプレビュー

ffmpeg  -f lavfi -i "testsrc2=s='480*360'" -filter_complex "[0]format=yuv444p,split=2[a][b];[b]drawbox=t=fill[b];[a][b]blend=all_expr='if(lte(2*abs(X-W/2)/W,(T-2)/3),A,B)':enable='between(t,0,6)',format=yuv420p" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i input.mp4 -filter_complex "[0]format=yuv444p,split=2[a][b];[b]drawbox=t=fill[b];[a][b]blend=all_expr='if(lte(2*abs(X-W/2)/W,(T-2)/3),A,B)':enable='between(t,0,6)',format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"

 

真ん中から左右へワイプするblendコマンド。

blend=all_expr='if(lte(2*abs(X-W/2)/W,(T-2)/3),A,B)'
続きを読む

FFmpegでテキストをフェードインフェードアウトする

Show text fading in and out (appearing/disappearing)

f:id:Askthewind:20181210160155g:plain

 

alpha command

FFmpegでプレビュー

ffmpeg -f lavfi -i "color='aliceblue:480*360'" -filter_complex "drawtext=fontfile='C\:/Windows/Fonts/impact.ttf':fontsize='30':fontcolor='white':bordercolor='dodgerblue':borderw='5':text='%{localtime\:%a/%b/%d/%Y}':x='(w-tw)/2':y='(h-th)/2':alpha='if(gt(t,2)\,1\,if(gt(t\,1)\,(1-(2-t))/1\,0))*if(lt(t,5)\,1\,if(lt(t\,6)\,(1-(t-5))/1\,0))'" -f matroska - | ffplay -i -

FFmpegエンコード

ffmpeg -i "input.mp4" -filter_complex "drawtext=fontfile='C\:/Windows/Fonts/impact.ttf':fontsize='30':fontcolor='white':bordercolor='dodgerblue':borderw='5':text='%{localtime\:%a/%b/%d/%Y}':x='(w-tw)/2':y='(h-th)/2':alpha='if(gt(t,2)\,1\,if(gt(t\,1)\,(1-(2-t))/1\,0))*if(lt(t,5)\,1\,if(lt(t\,6)\,(1-(t-5))/1\,0))'" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"
続きを読む

FFmpegで動画を中央から2分割して左右に表示する

FFmpeg Crop with side by side Split

 

left and right

f:id:Askthewind:20181210123610p:plain

 FFmpegで動画を中央から2分割して左右に表示する

FFmpegでプレビュー

ffmpeg -f lavfi -i "color=red:480*270" -filter_complex "split[a][b];[a]crop=iw/2:ih:0:0[c];[b]lutyuv=170:166:16,crop=iw/2:ih:ow:0[d];[c][d]hstack" -f matroska - | ffplay -i -
ffmpeg -i "input.mp4" -filter_complex "split[a][b];[a]crop=iw/2:ih:0:0[c];[b]boxblur=5,crop=iw/2:ih:ow:0[d];[c][d]hstack" -movflags +faststart -pix_fmt yuv420p -c:v libx264 -crf 20 "output.mp4"
続きを読む