マスクのグレースケールに応じてぼかす範囲を指定する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

数式で線や円、模様が描ける geq

輝度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

フレーム内の一部分にフィルタを当てるfeedback

公式ドキュメント: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まで

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)