一、概述
要更改 MP4 文件的播放速度,我们可以通过修改视频的 pts(显示时间戳)来实现。
FFmpeg 中有一个 setpts 滤镜,可以用来调整视频的播放速度。
二、加速视频
将视频的播放速度加倍(即 2 倍速播放),可以使用以下命令:
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output_fast.mp4
解释:
-i input.mp4:输入的 MP4 文件
-filter:v "setpts=0.5*PTS":通过设置 pts 为原来的 0.5 倍来加速视频
output_fast.mp4:生成的加速后的视频文件
三、减慢视频
将视频的播放速度减半(即 0.5 倍速播放),则可以使用以下命令:
ffmpeg -i input.mp4 -filter:v "setpts=2.0*PTS" output_slow.mp4
解释:
-filter:v "setpts=2.0*PTS":通过设置 pts 为原来的 2 倍来减慢视频
四、同时更改音频速度
通常情况下,仅调整视频速度会导致音画不同步。
如果希望音频和视频同时加速或减慢,可以使用 atempo 滤镜。
需要注意的是,atempo 滤镜只能支持 0.5 到 2.0 倍的速度调整。
4.1、加速视频和音频
以下命令将视频和音频同时加速到 2 倍速:
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output_fast_with_audio.mp4
4.2、减慢视频和音频
以下命令将视频和音频同时减速到 0.5 倍速:
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" output_slow_with_audio.mp4
五、注意事项
极端速度变化:如果需要更大幅度的速度变化,可以使用多个 atempo 滤镜。例如,要实现 4 倍速播放,可以链式使用两个 atempo=2.0 滤镜。
帧率调整:大幅减慢视频速度时,可能需要调整帧率以保持流畅的播放效果。