2入力の LUT を手軽に入れ替えられる lut2


ffmpeg 3.2 でリリース予定のビデオフィルタ。映像の YUV や RGB を別の映像と入れ換えるときに今までは extractplanes で対象チャンネルを取り出して、mergeplanes で合わせていたのが lut2 だけで入れ換えることができる。ただし複数入力するビデオフィルタでは同じ解像度と SAR でないとエラーが出る。

各映像チャンネルを分離する extractplanes
各映像チャンネルを結合する mergeplanes

また1入力で各チャンネルを入れ換えるには shuffleplanes や、swapuv フィルタがある。

plane を入れ替え、コピーする shuffleplanes

基本コマンド

1入力の Y(または R)をそのままに、1入力の UV(またはGB)を2入力の UV(またはGB)と入れ換える
ffmpeg -i input1 -i input2 -filter_complex lut2=c0=x:c1=y:c2=y output
ffmpeg -i input1 -i input2 -filter_complex lut2=x:y:y output

公式ドキュメント:FFmpeg Filters Documentation : lut2

オプション

    チャンネル指定

  • c0[string]
    1番目のチャンネル。一般的には Y または R
    既定値:x
  • c1[string]
    2番目のチャンネル。一般的には U または G
    既定値:x
  • c2[string]
    3番目のチャンネル。一般的には V または B
    既定値:x
  • c3[string]
    4番目のチャンネル。一般的には A
    既定値:x
    c0 から c3 に対応した評価式

  • w, h
    1入力した映像の横幅、または縦幅
  • x
    1入力した映像の LUT の値
  • y
    2入力した映像の LUT の値

評価式に対応しているので x, y の組み合わせで blend フィルタと同じことができ、負荷は変わらない。lut2 のメリットは blend と比べて書式が読みやすい。

YUV 映像を入力したときに同じ効果
ffmpeg -i input1 -i input2 -filter_complex lut2=c0=x:c1=min(255\,x+y):c2=x output
ffmpeg -i input1 -i input2 -filter_complex blend=c1_expr=min(255\,A+B) output

ffmpeg で使える計算書式
YUV RGB を比較計算する blend

コメントを残す

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