【发布时间】:2019-04-29 10:06:38
【问题描述】:
我一直在使用 FFmpeg 来减慢或加快视频文件(带音频)的速度。似乎要加快视频速度,应该使用setpts=0.5*PTS。但是,在加速音频时,asetpts=0.5*PTS 和 atempo=2.0 都可用。这两个选项有什么区别?哪个是更好的选择?
【问题讨论】:
我一直在使用 FFmpeg 来减慢或加快视频文件(带音频)的速度。似乎要加快视频速度,应该使用setpts=0.5*PTS。但是,在加速音频时,asetpts=0.5*PTS 和 atempo=2.0 都可用。这两个选项有什么区别?哪个是更好的选择?
【问题讨论】:
像setpts,asetpts 将音频帧丢弃或复制到指定的帧速率,而atempo 改变音频的速度。
比较asetpts=PTS/2 和atempo=2.0,在asetpts 中使用时会丢失一些信息。试试看,你会听到不同的声音。
【讨论】:
如果您只使用setpts=0.5*pts 作为过滤器的一部分,您会注意到这只适用于导致输出不同步的视频流。这就是为什么atempo=2.0 选项可用并打算与setpts 一起使用的原因。
更多信息可以找到here
【讨论】:
asetpts,而不是setpts,asetpts 以a 开头,表示音频,setpts 用于视频,asetpts 和atempo 似乎有类似的行为,两者都可以加速音频,但它们肯定有一些区别,我也不知道它们的区别。
从ffmpeg official wiki可以看出推荐atempo。
在我自己的测试用例中, asetpts 无法工作。 (我用ffprobe查看pkt_pts,没变,另外我玩了也没变)
【讨论】: