首页 / FFmpeg 入门教程 / 音频滤镜与声道处理

FFmpeg 入门教程

音频滤镜与声道处理

本教程共 32 篇 · 第 26 篇 · 更新于 2026-08-09 · 约 5 分钟阅读

FFmpeg音频滤镜volumeatempopanamix声道

本节目标:会用音频滤镜调音量、变速、改采样率;看懂声道布局,能做单双声道转换和多路音频混合。

视频滤镜处理画面,音频滤镜处理声音。音频滤镜用 -af(简单链)或在 -filter_complex 里和视频一起写。这一章挑最常用的讲。

一、volume:调音量

最基础也最常用:

ffmpeg -i input.mp4 -af "volume=2.0" output.mp4      # 音量翻倍
ffmpeg -i input.mp4 -af "volume=0.5" output.mp4      # 音量减半
ffmpeg -i input.mp4 -af "volume=-6dB" output.mp4     # 降低 6 分贝

volume 接受倍数(1.0 为原始)或 dB 值(6dB 约等于 2 倍,-6dB 约等于一半)。

Tip

不要一味调大音量。声音过大会爆音(削波失真)。先用 volumedetect 滤镜分析一下峰值:

ffmpeg -i input.mp4 -af volumedetect -f null -

输出里找 max_volume,通常让它接近 0 dB 但不超过 0 dB 最安全。

loudnorm:响度归一化

不同视频音量差很多,刷视频时一会震耳一会听不清。loudnorm 按 EBU R128 标准自动平衡响度,适合批量处理:

ffmpeg -i input.mp4 -af "loudnorm=I=-16:TP=-1.5:LRA=11" output.mp4
  • I=-16:目标响度 -16 LUFS(YouTube/播客常用值;电视广播常用 -23)
  • TP=-1.5:最大真峰值 -1.5 dBTP
  • LRA=11:响度范围 11 LU

二、aresample:重采样

改采样率和采样格式:

ffmpeg -i input.wav -af "aresample=48000" output.wav   # 转 48 kHz

视频制作里 48 kHz 是标准(视频音轨几乎都是 48 kHz),CD 是 44.1 kHz。如果源是 44.1 而项目是 48,用 aresample 转一下。

-ar 是简写,效果一样:

ffmpeg -i input.wav -ar 48000 output.wav

三、atempo:变速不变调

atempo 改变音频速度但保持音高,和视频的 setpts 对应:

ffmpeg -i input.mp3 -af "atempo=1.5" output.mp3   # 1.5 倍速
ffmpeg -i input.mp3 -af "atempo=0.8" output.mp3   # 0.8 倍速

单个 atempo 范围是 0.5–2.0。超出要串联:

ffmpeg -i input.mp3 -af "atempo=2.0,atempo=2.0" output.mp3   # 4 倍速

视频音频同时调速的组合写法在第 24 章出现过:

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

四、声道基础

音频有”声道”概念:单声道 1 路,立体声 2 路(左 L、右 R),5.1 环绕 6 路。查看源文件声道:

ffprobe -v error -select_streams a:0 -show_entries stream=channels,channel_layout input.mp4

立体声转单声道

ffmpeg -i input.mp4 -af "pan=mono|c0=c0+c1" output.mp4

更简单的写法用 -ac

ffmpeg -i input.mp4 -ac 1 output.mp4    # 单声道
ffmpeg -i input.mp4 -ac 2 output.mp4    # 立体声

-ac 1 把左右声道混合成单声道。

左右声道分别处理

pan 滤镜精确控制每一路输出怎么从输入混合。比如只保留左声道、复制到左右两路:

ffmpeg -i input.mp4 -af "pan=stereo|c0=c0|c1=c0" output.mp4

把右声道声音换到左声道:

ffmpeg -i input.mp4 -af "pan=stereo|c0=c1|c1=c1" output.mp4

c0=c0+c1 表示”输出第 0 路 = 输入第 0 路 + 输入第 1 路”。

五、apad / atrim:填充与剪辑

atrim 截取音频片段,和视频的 -ss/-t 类似但在滤镜图里更灵活:

ffmpeg -i input.mp3 -af "atrim=start=10:end=30,asetpts=PTS-STARTPTS" output.mp3

截取第 10–30 秒。asetpts=PTS-STARTPTS 是重置时间戳,让截取后的片段从 0 开始,否则播放器会从第 10 秒开始显示。

apad 在音频末尾补静音,常用于把短音频拉长到和视频等长:

ffmpeg -i video.mp4 -i short.mp3 -filter_complex \
  "[1:a]apad[a]" -map 0:v -map "[a]" -shortest output.mp4

六、amix:混合多路音频

把两路声音混在一起(比如配乐加旁白):

ffmpeg -i voice.mp3 -i music.mp3 -filter_complex \
  "[0:a][1:a]amix=inputs=2:duration=first[aout]" \
  -map "[aout]" output.mp3
  • inputs=2:两路输入
  • duration=first:以第一路长度为准(也可以 longest/shortest
  • 默认会自动降低每路音量防止爆音。如果想保持原始音量加 normalize=0

调整各路音量再混合

ffmpeg -i voice.mp3 -i music.mp3 -filter_complex \
  "[0:a]volume=1.0[v];[1:a]volume=0.3[m];[v][m]amix=inputs=2:duration=first[a]" \
  -map "[a]" output.mp3

旁白保持原音量,背景音乐压到 30%,再混合。

七、aselect / asendcmd:更多可能

音频滤镜数量很多,但日常用到的就那几个。查完整列表:

ffmpeg -filters | findstr "audio"     # Windows
ffmpeg -filters | grep  " audio"      # macOS/Linux
Note

视频滤镜不能处理音频流,反之亦然。写滤镜前先确认流类型。如果用 -filter_complex,用 [0:a] 明确引用音频流,用 [0:v] 引用视频流,FFmpeg 会自动检查类型匹配。