FFmpeg命令行之ffmpeg调整音视频播放速度
FFmpeg对音频、视频播放速度的调整的原理不一样。下面简单的说一下各自的原理及实现方式:
一、调整视频速率
视频的倍速主要是通过控制filter
中的setpts
来实现,setpts
是视频滤波器通过改变每一个pts
时间戳来实现倍速的效果,如下只要把PTS
缩小一半就可以实现2倍速,相反的是PTS
增加一倍就达到2倍慢放的效果。
实现:
ffmpeg -i test.mp4 -an -filter:v "setpts=0.5*PTS" output.mp4
ffmpeg -i test.mp4 -an -filter:v "setpts=2*PTS" output.mp4
注意:视频调整的速度倍率范围为:[0.25, 4]
如果只调整视频的话最好把音频禁掉。
对视频进行加速时,如果不想丢帧,可以用-r 参数指定输出视频FPS,方法如下:
ffmpeg -i test.mp4 -an -r 60 -filter:v "setpts=2.0*PTS" output.mp4
二、调整音频速率
调整视频速率的原理为:简单的方法是调整音频采样率,但是这种方法会改变音色, 一般采用通过对原音进行重采样,差值等方法。
音频的倍速则是通过控制filter
的atempo
来实现,atempo
的配置区间在0.5和2.0之间,如果需要更高倍速,则需要多个atempo
串一起,下面是2、4倍速的实现命令。
ffmpeg -i test.mp4 -filter:a "atempo=2.0" -vn output.mp4
注意:倍率调整范围为[0.5, 2.0]
如果需要调整4倍可采用以下方法:
ffmpeg -i test.mp4 -filter:a "atempo=2.0,atempo=2.0" -vn output.mp4
如果需要音视频同时调整,可以采用如下的方式来实现:
2倍:
ffmpeg -i test.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4
4倍:
ffmpeg -i test.mp4 -filter_complex "[0:v]setpts=0.25*PTS[v];[0:a]atempo=4.0[a]" -map "[v]" -map "[a]" output4.mp4
三、参考资料
http://trac.ffmpeg.org/wiki/How to speed up / slow down a video
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库