一行命令实现视频、音频倍速

3,785 阅读2分钟

最近小李看了一部悬疑爱情电视剧 《想见你》,看过的朋友估计都已经被伍佰的一首《last dance》洗了脑,相当上头。

由于我是二倍速观看的视频,里面播放的歌曲也是二倍速。脱离开视频,我下载了这首歌试听之后,感觉截然不同,整体节奏放缓,不够洗脑,不符合新时代快节奏的生活,简而言之,没那味了。于是我便想要将此歌倍速播放,掏出了法宝FFmpeg

改变音频速率

改变音频速率最简单的方法是直接调整音频的采样率,但是与此同时,这种方法会改变音频的音色。目前一般采用对原音进行重采样,差值等方法来实现。下面这行命令的倍率调整范围为0.5到2。

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

如果想要再快的话,需要更改命令,通过将多个atempo过滤器串接在一起来绕过这个限制。

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

改变视频速率

改变视频的播放速率是通过修改视频的表示时间戳(PTS)来实现的。举个简单的例子,如果在时间戳1和2处显示两个连续帧,我们想要加快视频速度,那么这两个时间戳需要分别变为0.5和1。因此,我们必须把他们乘以0.5。

ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.5*PTS" output.mkv

对视频进行加速时,为了不丢帧,可以利用-r 参数指定输出的fps。

一般来说,视频倍速还需要将视频中的音频也一同倍速,通过混合的过滤图实现,命令如下,

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

想要倍速播放视频、音乐的朋友不妨试试吧~

参考文献