ffmpeg 4.3から使える予定のフィルタ。tileフィルタで一覧にした複数フレームを1つの連続したフレームに戻すのと、1フレームを分割して複数フレームにするuntileフィルタの使い方。

1フレームに複数のフレームを表示する tile

基本コマンド

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"

解像度が一致しなくても映像を並べられる xstack

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

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