【发布时间】:2021-01-22 17:01:06
【问题描述】:
我正在使用 ffmpeg 将两个人聊天的视频拼接成一个视频,每个视频并排,如下所示:
这是我目前用来完成此任务的命令,它在我的 13" M1 MacBook Pro 上以 ~2.5 倍的速度运行:
ffmpeg -y -i left.mp4 -i right.mp4 -filter_complex "
[0:v] crop=w=in_w/2 [croppedLeft];
[1:v][1:v] overlay=x=overlay_w/4 [shiftedRight];
[shiftedRight][croppedLeft] overlay [vout];
[0:a][1:a] amix [aout]
" -map "[vout]" -map "[aout]" -ac 2 out.mp4
此命令将左侧视频裁剪为其原始宽度的一半(裁剪以使视频居中),然后将右侧视频向右移动其宽度的四分之一,然后将左侧视频覆盖在输出的左半部分与右移视频合并。
有一天,在我每周阅读FFmpeg filters documentation 时,我偶然发现了一个名为hstack 的过滤器,它被描述为“比使用叠加和填充过滤器创建相同的输出更快”。
我的前妻可以肯定,在我的生活中没有什么比加快速度更重要的事情了,所以我将我的 ffmpeg 脚本更改为使用 hstack 而不是两个 overlays:
ffmpeg -y -i left.mp4 -i right.mp4 -filter_complex "
[0:v] crop=w=in_w/2 [croppedLeft];
[1:v] crop=w=in_w/2 [croppedRight];
[croppedLeft][croppedRight] vstack [vout];
[0:a][1:a] amix [aout]
" -map "[vout]" -map "[aout]" -ac 2 out.mp4
...但是该命令运行痛苦很慢,就像 0.1 倍。渲染一秒需要几分钟。
那么,呃,这里发生了什么?为什么应该更快的 hstack 却花了这么长时间?
我已经在 OSXExperts(版本 N-99816-g3da35b7)和 the standard ffmpeg from brew 的 M1 原生构建上尝试过这个,hstack 都一样慢。
【问题讨论】:
-
可能是因为第一个输入没有设置有效的 fps。切换hstack中的顺序并检查。
标签: ffmpeg