音频滤镜与声道处理
本教程共 32 篇 · 第 26 篇 · 更新于 2026-08-09 · 约 5 分钟阅读
本节目标:会用音频滤镜调音量、变速、改采样率;看懂声道布局,能做单双声道转换和多路音频混合。
视频滤镜处理画面,音频滤镜处理声音。音频滤镜用 -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 dBTPLRA=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 会自动检查类型匹配。