视频网格与vstack和hstack

时间:2016-03-28 18:20:12

标签: video ffmpeg

我想将四个视频合并到一个网格中。目前我正在使用vstack来组合行,然后使用hstack来组合两个输出,以及添加音频。

ffmpeg -ss 0 -i 1.mp4 -ss 8 -i 3.mp4 -filter_complex vstack left.mp4
ffmpeg -ss 0 -i 2.mp4 -ss 0 -i 4.mp4 -filter_complex vstack right.mp4
ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack -i audio.mp4 output.mp4

It seams possible to do this in one operation using overlay and pad.但是,文档指出使用vstackhstack的速度更快。这两个过滤器可以组合成一个单独的操作吗?

1 个答案:

答案 0 :(得分:14)

enter image description here

您可以使用hstackvstack过滤器在一个命令中完成所有操作。

ffmpeg -i top_l.mp4 -i top_r.mp4 -i bottom_l.mp4 -i bottom_r.mp4 -i audio.mp4 \
-filter_complex "[0:v][1:v]hstack[t];[2:v][3:v]hstack[b];[t][b]vstack[v]" \
-map "[v]" -map 4:a -c:a copy -shortest output.mp4
  • 来自audio.mp4的音频为stream copied,而不是不必要地重新编码。

如果您希望组合每个输入的音频而不是提供单独的音频输入,请使用amerge过滤器。将-ac 2添加到缩混到立体声;否则输出将具有累积的音频通道数。

ffmpeg -i top_l.mp4 -i top_r.mp4 -i bottom_l.mp4 -i bottom_r.mp4 -filter_complex \
"[0:v][1:v]hstack[t];[2:v][3:v]hstack[b];[t][b]vstack[v]; \
 [0:a][1:a][2:a][3:a]amerge=inputs=4[a]" \
-map "[v]" -map "[a]" -ac 2 -shortest output.mp4