You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FFmpeg调整视频音高,无需提取合并音轨?

FFmpeg调整视频内置音频音高操作方案

完全可以实现该需求,无需单独提取、合并音轨,直接通过FFmpeg的音频滤镜处理内置音轨即可,原视频流可直接拷贝不重新编码,操作效率极高。

方案1:不改变音频时长调整音高(推荐)

使用rubberband滤镜,支持无时长变化的音高调整,对音频音质损伤较小:

ffmpeg -i 输入视频路径 -filter_complex "[0:a]rubberband=pitch=半音偏移值[a]" -map 0:v -map "[a]" -c:v copy 输出视频路径

参数说明:

  • pitch值为半音偏移量,正数代表升调,负数代表降调,比如pitch=2就是升2个半音,pitch=-3就是降3个半音
  • -c:v copy表示直接拷贝原视频流,不重新编码,速度快且无画质损失
  • 如果你需要按倍率调整音高,可以把pitch=半音偏移值替换为pitch_scale=倍率,比如pitch_scale=1.2就是将音高调整为原来的1.2倍

方案2:无依赖轻量调音高方案

如果你的FFmpeg没有rubberband编译支持,可以使用asetrate滤镜实现调整:

  • 可接受音频时长同步变化(升调语速变快、降调语速变慢)的场景可以直接用以下命令:
    ffmpeg -i 输入视频路径 -filter:a "asetrate=原采样率*音高倍率" -c:v copy 输出视频路径
    
  • 需要保持时长不变的话,可以在滤镜后追加atempo参数修正时长,以升调2个半音(音高倍率为2^(2/12)≈1.122)为例:
    ffmpeg -i 输入视频路径 -filter:a "asetrate=44100*1.122,atempo=1/1.122" -c:v copy 输出视频路径
    

注意事项

  • 如果调整指定音轨,将滤镜中[0:a]修改为对应音轨序号即可,比如调整第2个音轨改为[0:a:1](序号从0开始计数)
  • Windows用户如果提示找不到rubberband滤镜,可以下载FFmpeg完整编译版本使用
  • Linux用户可以先安装librubberband-dev依赖后重新编译FFmpeg,即可使用rubberband滤镜

内容的提问来源于stack exchange,提问作者Syed Hussain Bukhari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:57:04