ffmpeg 4.3から使える予定のフィルタ。tile
フィルタで一覧にした複数フレームを1つの連続したフレームに戻すのと、1フレームを分割して複数フレームにするuntile
フィルタの使い方。
基本コマンド
tile
フィルタで複数並べたのを元に戻す例。
ffmpeg -i input -vf tile=layout=3x3,untile=layout=3x3 -c:a copy output
ffplay -i input -vf tile=layout=3x3,untile=layout=3x3
縦に4分割した映像の例。フレームレートとフレーム数は分割しただけ増える。つまり1×4なので4倍。奇数解像度はピクセルフォーマットによってはエラーになるのに注意する。
ffmpeg -i input -vf untile=layout=1x4 -c:a copy output
ffplay -i input -vf untile=layout=1x4
縦に分割したファイルを再び縦に並べ直してシーンチェンジ効果を作る。これも分割数だけフレームが増える。
ffmpeg -i input -vf untile=1x4,select='1+mod(n,4)':n=4,vstack=4 -c:a copy output
ffplay -i input -vf untile=1x4,select='1+mod(n,4)':n=4,vstack=4
10分割位にするとシーンチェンジ効果がよく分かるがフレームがそれだけ増えるので元のフレームレートを再指定してフレームを減らす。
ffmpeg -i input -vf untile=1x10,select='1+mod(n,10)':n=10,vstack=10,fps=24/1.001 -c:a copy output
ffplay -i input -vf untile=1x10,select='1+mod(n,10)':n=10,vstack=10
4分割してxstack
フィルタで元に戻す。tile
フィルタで戻していないのでフレーム数は4倍になる。
ffplay -f lavfi -i testsrc2 -vf "untile=2x2,select='1*eq(mod(n,4),0)+2*eq(mod(n+3,4),0)+3*eq(mod(n+2,4),0)+4*eq(mod(n+1,4),0)':n=4,xstack=4:layout=0_0|w0_0|0_h0|w0_h0"
ffplay -f lavfi -i testsrc2 -vf "untile=2x2,select='1+mod(n,4)':n=4,xstack=4:layout=0_0|w0_0|0_h0|w0_h0"
eq(mod(N,4),0)の出力フレーム番号。1が開始フレーム。
N | 出力フレーム |
n | 1, 5, 9 |
n+1 | 4, 8, 12 |
n+2 | 3, 7, 11 |
n+3 | 2, 6, 10 |
公式ドキュメント:FFmpeg Filters Documentation : untile
オプション
- layout[image_size]
1フレームのタイルの枚数を指定する。左上から右下に並ぶ(横x縦)
既定値:6×5