2入力した映像の YUVA や RGBA を比較して結果を表示するblend
の使い方。差分を調べて比較動画を作ったり、マスクした部分に別の映像を重ねたりいろいろな映像効果を作ることができる。
基本コマンド
比較動画として上に二つ並べて左下に差分(Y は 0 差分、UV は1入力)の動画を表示するコマンド例。
ffplay -f lavfi -i "movie=left.mp4,setpts=PTS-STARTPTS,split[a1][a2];movie=right.mp4,setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack"
ffmpeg -i left.mp4 -i right.mp4 -filter_complex [0:v]setpts=PTS-STARTPTS,split[a1][a2];[1:v]setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack -c:a copy output
比較動画として上に二つ並べて左下に差分(Y は 0 差分、UV は128)の動画を表示するコマンド例。
ffplay -f lavfi -i "movie=left.mp4,setpts=PTS-STARTPTS,split[a1][a2];movie=right.mp4,setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,lutyuv=val:128:128,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack"
ffmpeg -i left.mp4 -i right.mp4 -filter_complex [0:v]setpts=PTS-STARTPTS,split[a1][a2];[1:v]setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,lutyuv=val:128:128,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack -c:a copy output
さらに音声も再生するコマンド例(音声は left.mp4)。
ffplay -f lavfi -i "movie=left.mp4,setpts=PTS-STARTPTS,split[a1][a2];movie=right.mp4,setpts=PTS-STARTPTS,split[b1][b2];[a1][b1]blend=c0_mode=difference,lutyuv=val:128:128,pad=2*iw:ih:0:0[blend];[a2][b2]hstack[tmp];[tmp][blend]vstack[out0];amovie=left.mp4[out1]"
開始フレームが一致しない場合はsetpts
フィルタの前にtrim
フィルタを使う。以下は開始1フレームカットする例。
trim=start_frame=1
間違い探しを簡単に調べるコマンド(インターネット上の画像も入力できる)。
ffmpeg -i img1.jpg -i img2.jpg -filter_complex setsar=1/1[0a];[1]setsar=1/1,[0a]blend=c0_mode=grainextract,lutyuv=val:128:128 output.jpg
Continue reading “YUV RGB を比較計算する blend”