ffmpeg 3.2 でリリースしたビデオフィルタ。映像の YUV や RGB を別の映像と入れ換えるときに今までは extractplanes
フィルタで対象チャンネルを取り出して、mergeplanes
フィルタで合わせていたのが lut2
フィルタだけで入れ換えるられる。ただし複数入力するビデオフィルタでは同じ解像度と SAR でないとエラーが出る。
1入力目が YUVA で2入力目が RGBA の場合、YUVA に RGBA の A を入れ換えることもできる。
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 -i input1 -i input2 -filter_complex lut2=x:y:y,realtime -f sdl -
公式ドキュメント:FFmpeg Filters Documentation : lut2, tlut2
オプション
- チャンネル指定
- c0[string]
1番目のチャンネル。一般的には Y または R
既定値:x(1入力目) - 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 -i input1 -i input2 -filter_complex lut2=c0=x:c1=min(255\,x+y):c2=x,realtime -f sdl -
ffmpeg で使える評価式
YUV RGB を比較計算する blend
前後フレームの差分をブレンドする tblend