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


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

ffmpeg 3.4 でリリース予定に同じオプションで tlut2 フィルタも追加される。こちらは1入力1出力になり、前後フレームの LUT を入れ換える。いわゆる tblend フィルタの LUT 版になる。

各映像チャンネルを分離する 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 -re -i input1 -i input2 -filter_complex lut2=x:y:y -f sdl -

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

オプション

    チャンネル指定

  • 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 の値
  • bdx
    1入力した映像のビット深度の値
  • bdy
    2入力した映像のビット深度の値

評価式に対応しているので 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 -re -i input1 -i input2 -filter_complex lut2=c0=x:c1=min(255\,x+y):c2=x -f sdl -

ffmpeg で使える計算書式
YUV RGB を比較計算する blend
前後フレームの差分をブレンドする tblend

コメントを残す

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

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