使用FFmpeg中的setpts和tempo时,音频不同步

5
我想尝试同时减慢一个视频和它的音频(mp4)速度。我已经尝试过使用类似下面命令的代码分别处理音频和视频,但仍然会出现相同的问题。

大约30秒后,音频会逐渐与视频不同步(音频加快了)。

-i "INPUT" -filter_complex "[0:v]setpts=1.1*PTS[v];[0:a]atempo=0.9[a]" -map "[v]" -map "[a]" "OUTPUT"

欢迎提供任何建议。提前感谢。


这是一个经典的数学错误:“10% 的增加(即 x 1.1)可以通过减少 10%(x 0.9)来补偿。”不!要抵消 x 1.1,你必须除以 1.1 - Basj
1个回答

7

您没有以相同的比例更改音频和视频的速度。

视频减速到1.0 / 1.1 = 90.91%

因此,为了精度,请使用分数指定相同的音频速度。

-i "INPUT" -filter_complex "[0:v]setpts=1.1*PTS[v];[0:a]atempo=(1/1.1)[a]" -map "[v]"" -map "[a]" "OUTPUT"

@Mulya,我正在尝试将速度增加3倍,通过设置setpts = 0.33 * PTS,如何计算相应的atempo速度? - Zain Ali
2
atempo only goes upto 2.0, so you'll need two calls: atempo=1.5,atempo=2 where 1.5 x 2 = 3 - Gyan
@Gyan,我需要快速的4倍速度视频和音频,但按照atempo的设置只能提高到2.0倍速,那我该如何实现4倍速的音频加速呢?请帮助我。 - Nikunj Paradva
2
最近的版本可以升级到100。请升级。 - Gyan
嘿,所以https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video需要更新 :) - Roel Van de Paar
使用分数的回答非常好,它能够解决“可以工作”和“即使使用许多小数位数字仍然存在声音不同步”的问题。谢谢! - Roel Van de Paar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接