モノクロ部分の UV が 128 になるのを利用してこの部分以外をマスクして真っ黒にする。
コマンド例
ffmpeg -i video.ts -vf bwdif=0:-1:1,decimate,removelogo=logo.bmp,split=3[0][1][2];[2]format=yuv444p,avgblur=3:2,shuffleplanes=1:1:1,lutyuv=between(val\,120\,135)\*255:val:val[2a];[1]lutyuv=0:val:val[1a];[0]format=yuvj420p[0a];[0a][1a][2a]maskedmerge=0x7,format=yuv420p -acodec copy output.mp4
フィルタの解説
- インターレース解除に
bwdif
、フレーム間引きにdecimate
を使い、removelogo
でのロゴを消す。 maskedmerge
を使ってマスクするので、元映像と映像効果を与える映像とマスク映像の3つにsplit
で分割する。format=yuv444p
で UV を拡大し、avgblur
で境界をぼかし、shuffleplanes
で U を Y に当てて、lutyuv
でマスクを作る。lutyuv=0:val:val
は映像効果を与える部分。今回はマスクされていない部分が真っ暗になる。format=yuvj420p
フルレンジに変換し、マスクをきれいに当てる。maskedmerge
でマスクを適用し、format=yuv420p
でリミテッドレンジに戻す。
個別フィルタの記事
- インターレースを解除する bwdif
- ffmpeg でインターレース解除
- ffmpeg できれいにロゴを消す方法
- 平均ブラー avgblur
- plane を入れ替え、コピーする shuffleplanes
- マスクして2入力を合わせる maskedmerge
サンプル動画