我怎样才能将这四个视频并排拼接起来(左右两侧之间有 10px 的边距,上下之间没有边距)?
左上角.mp4
右上角.mp4
左下.mp4
右下角.mp4
Kdenlive 漏洞百出,让我抓狂。欢迎使用任何命令行方法。
答案1
仅限视频
左右之间有 10px 边框
有几种方法可以做到这一点,但使用堆栈,虚拟栈, 和软垫可能是最简单的:
ffmpeg -i top_left.mp4 -i bottom_left.mp4 -i top_right.mp4 -i bottom_right.mp4 -filter_complex \
"[0:v][1:v]vstack,pad=iw+10:ih[l]; \
[2:v][3:v]vstack[r]; \
[l][r]hstack" \
output.mp4
*stack=shortest=1
如果您希望过滤器输出在最短输入终止时终止,则使用。
左右之间有 10px 边框,上下之间有 3px 边框
ffmpeg -i top_left.mp4 -i bottom_left.mp4 -i top_right.mp4 -i bottom_right.mp4 -filter_complex \
"[0:v]pad=iw:ih+3[tl]; \
[tl][1:v]vstack,pad=iw+10:ih[l]; \
[2:v]pad=iw:ih+3[tr]; \
[tr][3:v]vstack[r]; \
[l][r]hstack" \
output.mp4
带合并音频
这合并过滤器将组合所有输入通道,然后-ac 2
将它们混音为立体声:
ffmpeg -i top_left.mp4 -i bottom_left.mp4 -i top_right.mp4 -i bottom_right.mp4 -filter_complex \
"[0:v][1:v]vstack,pad=iw+10:ih[l]; \
[2:v][3:v]vstack[r]; \
[l][r]hstack[v]; \
[0:a][1:a][2:a][3:a]amerge=inputs=4[a]"
-map "[v]" -map "[a]" -ac 2 output.mp4
- 使用 amerge,合并后的音频将仅与最短输入一样长。如果这是个问题,那么使用混合物。