用FFmpeg变速播放
⏩ 变速在视频创作中的艺术效果

改变播放速度是视频创作用来控制节奏和情绪的重要手段:

  • 延时与快进:将几分钟甚至几小时的素材压缩到几十秒(延时摄影),用于展示过程变化(日出日落、城市交通)或快速概览内容。
  • 慢动作:放慢精彩瞬间——进球、跳跃、表情变化——增强戏剧感和细节表现力。通常2~4倍慢放效果最佳。
  • 音画同步:变速时务必同时处理视频和音频。单纯变速视频会导致音画不同步,音频的 atempo 滤镜可保持音调不变只改变速度。
  • 情绪引导:快节奏提升紧张感,慢速营造抒情氛围。合理运用变速可以有效操控观众的情绪节奏,增强作品感染力。
FFmpeg变速原理详解

FFmpeg 变速处理依赖两个核心滤镜:setpts(视频)和 atempo(音频),二者分别作用于视频流和音频流,不能相互替代。

🎬 视频变速:setpts 滤镜

setpts 全称 Set Presentation Timestamp(设置显示时间戳),它通过修改每一帧的 PTS 值来改变视频播放速度。PTS 是视频帧在播放时的显示时间标记,单位通常为秒或时间基的整数倍。

  • 公式setpts=<系数>*PTS,其中 系数 < 1 为加速系数 > 1 为减速
  • 加速 2 倍setpts=0.5*PTS —— 每帧的时间戳减半,播放器认为帧间间隔缩短,从而加速播放。
  • 减速 0.5 倍setpts=2.0*PTS —— 每帧的时间戳加倍,帧间间隔拉长,画面慢放。
  • 注意:加速视频时帧数不变,但实际播放帧率会提升。若原视频 30fps 加速 2 倍,输出仍为 30fps,但每秒显示的原始内容相当于 60fps 的信息量。大量丢弃帧可能导致画面不连贯,建议配合 -r 参数调整输出帧率。
🎵 音频变速:atempo 滤镜

atempo(Audio Tempo)滤镜通过 WSOLA(波形相似叠加算法,Waveform Similarity Overlap-Add) 改变音频播放速度,同时保持音调不变(即不产生"花栗鼠效应")。

  • 范围限制atempo 的合法值为 0.5 ~ 2.0(含边界),超出此范围需链式调用:如要加速 4 倍,需串联 atempo=2.0,atempo=2.0
  • 加速 2 倍atempo=2.0 —— 音频时长减半,音调保持不变。
  • 减速 0.5 倍atempo=0.5 —— 音频时长加倍,音调保持不变。
🔗 同时变速视频和音频

当需要同时改变视频和音频速度时,必须使用 -filter_complex(复杂滤镜图),将 setptsatempo 分别应用到各自的流上,并通过 -map 将处理后的流映射到输出文件。

  • 加速-filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]"
  • 减速-filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]"

提示:保持音画同步的关键是确保加速/减速倍数一致。若视频加速 2 倍(setpts=0.5),音频也必须加速 2 倍(atempo=2.0),否则音画会逐渐错位。

广告
{{v.name}}
仅改变视频播放速度,保持音频原速不变,加速播放,代码如下
$ ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4
仅改变视频播放速度,保持音频原速不变,减速播放,代码如下
$ ffmpeg -i input.mp4 -filter:v "setpts=2.0*PTS" output.mp4
仅改变音频播放速度,保持视频原速不变,加速播放,代码如下
$ ffmpeg -i input.mp4 -filter:a "atempo=2.0" -vn output.mp4
仅改变音频播放速度,保持视频原速不变,减速播放,代码如下
$ ffmpeg -i input.mp4 -filter:a "atempo=0.5" -vn output.mp4
同时加速视频和音频播放,代码如下
$ ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4
同时减速视频和音频播放,代码如下
$ ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" output.mp4
友链