マスクのグレースケールに応じてぼかす範囲を指定するvarblur
(Apply variable blur)フィルタの使い方。マスクをつくる方法はgeq
フィルタで任意の図形をつくる、lut
フィルタなどで映像を加工する、untile
フィルタで分割した場所を指定するなどがある。2つのビデオストリームが必要だがそれぞれ同じ解像度出なければならない。タイムライン編集に対応。
基本コマンド
中心から半径100ピクセルの円をぼかす。
ffmpeg -i input -f lavfi -i color=s=1280x720:r=24/1.001,format=gray,lut=0,geq=255*lt(hypot(X-W/2\,Y-H/2)\,100),loop=-1:1:0,setpts=N/FRAME_RATE/TB -filter_complex varblur -c:a copy output.mp4
輝度128未満をぼかす。
ffmpeg -i input -vf split[1],lutyuv=’if(val\,if(lt(val\,128)\,255\)\,0):128:128’,[1]varblur -c:a copy output.mp4
feedback
フィルタで使った同じ方法で任意の場所をぼかす。
ffmpeg -f lavfi -i color=s=1280x720:r=1 -vf untile=4x4,select=st(0\,between(mod(n\,16),2\,5)+between(mod(n\,16),9\,10)+eq(mod(n\,16)\,15));1*not(ld(0))+2*(ld(0)):n=2[evn][odd];[odd]hue=n[odd];[odd]lutyuv=255:128:128[odd];[evn][odd]interleave,tile=4x4 -r 1 -frames:v 1 -pix_fmt gray mask.png
ffmpeg -f lavfi -i testsrc2=s=1280x720:d=10 -f lavfi -i movie=mask.png -filter_complex varblur=0:1 output.mp4
公式ドキュメント:FFmpeg Filters Documentation : varblur
オプション
framesyncに対応。
- min_r[int]
ぼかす半径の最小値。0より大きな値にするとマスクで0にしてもフィルタの効果が残る
既定値:0
範囲:0から254まで - max_r[int]
ぼかす半径の最大値。1より大きな値にするとマスクした範囲以外にもフィルタの効果が残る
既定値:8
範囲:1から255まで - planes[int]
フィルタを当てるチャンネル指定
詳しくは ffmpeg について | チャンネルの順番と注意点を参照
既定値:15
範囲:0から15まで