音频处理深入:混音、降噪、音量调节与格式转换

0 阅读7分钟

音频处理深入:混音、降噪、音量调节与格式转换

视频处理讲完了,这篇专门讲音频。音量忽大忽小怎么办?背景噪音怎么消?两个音频怎么混一起?麦克风录音怎么优化?FFmpeg 的音频滤镜虽然不如视频多,但日常处理完全够用。

大家好,我是黒漂技术佬。

很多人做视频只关心画面,忽略了音频——但观众对音频的容忍度比视频低多了。画面糊一点能看,声音渣、有杂音、忽大忽小,直接就划走了。

这篇把 FFmpeg 常用的音频处理讲清楚:音量、降噪、混音、格式转换、常用滤镜,配合实际场景讲。


一、音频基础概念扫盲

先搞懂几个基本概念,后面参数才看得懂。

采样率(Sample Rate)

每秒对声音采样多少次,单位 Hz。常见:

  • 44100 Hz(44.1kHz):CD 音质,最常用
  • 48000 Hz(48kHz):视频常用标准
  • 22050 Hz / 16000 Hz:语音、电话音质

位深(Bit Depth)

每个采样点用多少位存储,决定动态范围:

  • 16 bit:CD 音质,够用
  • 24 bit:专业录音,后期处理空间大

声道数(Channels)

  • 1:单声道(Mono)
  • 2:立体声(Stereo)
  • 5.1、7.1:环绕声

码率(Bitrate)

每秒音频的数据量,单位 kbps。和音质正相关:

  • 64 kbps 单声道:语音够用
  • 128 kbps 立体声:MP3 常见,接近 CD 听感
  • 192-320 kbps:高音质
  • 无损(FLAC/PCM):1000+ kbps

二、音频格式转换

常见格式对比

格式编码特点适用场景
MP3MPEG-1 Layer3兼容性最好,有损通用、音乐
AACAdvanced Audio Coding同码率比 MP3 好视频、手机、流媒体
OpusOpus低码率音质最好语音、直播、WebRTC
FLACFree Lossless无损压缩音乐存档
WAVPCM 原始数据无损、体积大录音、后期制作

常用转换命令

MP3 → AAC

ffmpeg -i input.mp3 -acodec aac -b:a 128k output.m4a

WAV → MP3

ffmpeg -i input.wav -acodec libmp3lame -q:a 2 output.mp3

-q:a 2 是 LAME 的 VBR 模式,约 190kbps,音质很好。

任意格式 → WAV(无损提取)

ffmpeg -i input.mp3 -acodec pcm_s16le output.wav

提取视频里的音频

ffmpeg -i input.mp4 -vn -acodec copy output.aac

-vn 去掉视频流,-acodec copy 直接复制音频,不重新编码,速度快。


三、音量调节

基础调节

# 音量加倍
ffmpeg -i input.mp3 -af "volume=2" output.mp3

# 音量减半
ffmpeg -i input.mp3 -af "volume=0.5" output.mp3

# 降低 3dB
ffmpeg -i input.mp3 -af "volume=-3dB" output.mp3

可以用倍数,也可以用 dB(分贝)。

音量标准化:自动调到合适大小

录音声音忽大忽小,或者整体太小怎么办?用 loudnorm 滤镜做响度标准化:

ffmpeg -i input.mp3 -af "loudnorm=I=-16:TP=-1.5:LRA=11" output.mp3

参数说明:

  • I=-16:综合响度 -16 LUFS(视频平台常用标准)
  • TP=-1.5:峰值不超过 -1.5 dB
  • LRA=11:响度范围

做视频上传 B 站、YouTube 的话,响度标准化很有用——不会声音太小被淹没,也不会太大被平台二次压缩。

检测音量

先看看当前音频的音量情况,再决定调多少:

ffmpeg -i input.mp3 -af "volumedetect" -f null /dev/null

输出里会有 max_volumemean_volume,告诉你最大音量和平均音量。


四、降噪

录音有背景噪音(空调声、电脑风扇声),用 FFmpeg 可以消掉一部分。

方法 1:afftdn(频域降噪)

ffmpeg -i input.mp3 -af "afftdn=nf=-20" output.mp3
  • nf=-20:降噪强度,单位 dB。数值越小降噪越强。
  • 常用范围:-15 到 -30
  • 优点:简单,一步到位
  • 缺点:降噪强了容易有「水音」「金属音」

方法 2:arnndn(AI 降噪,推荐)

FFmpeg 7.0+ 支持的 AI 降噪滤镜,效果比传统方法好很多。

ffmpeg -i input.mp3 -af "arnndn=m=model.rnnn" output.mp3

需要下载训练好的模型文件(.rnnn 格式),网上有很多开源的语音降噪模型。

我做售货柜语音交互的时候对比过,arnndn 对环境噪音的抑制效果明显更好,人声也更自然。缺点是需要额外模型文件,老版本 FFmpeg 不支持。

降噪的正确姿势

  1. 先录一段纯噪音(没人说话的几秒)
  2. 用噪音样本做降噪参考(部分降噪工具支持)
  3. 降噪强度别开太大,否则人声会失真
  4. 降噪是「减法」,噪音太大救不回来,前期录好最重要

五、混音与拼接

两个音频混合(叠加)

ffmpeg -i voice.mp3 -i bgm.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=shortest" output.mp3
  • amix=inputs=2:两个输入混合
  • duration=shortest:以短的那个为准,播完就结束

背景音乐音量调小

ffmpeg -i voice.mp3 -i bgm.mp3 -filter_complex "[1:a]volume=0.3[bgm];[0:a][bgm]amix=inputs=2" output.mp3

先把背景音乐降到 30%,再和人声混合。

多个音频首尾拼接

和视频拼接一样,用 concat:

# filelist.txt
file '001.mp3'
file '002.mp3'
file '003.mp3'

ffmpeg -f concat -i filelist.txt -c copy output.mp3

格式、采样率、声道数必须一致才能 copy,否则要重新编码。


六、声道处理

立体声转单声道

ffmpeg -i stereo.mp3 -ac 1 mono.mp3

提取左声道 / 右声道

# 左声道
ffmpeg -i stereo.mp3 -af "pan=mono|c0=c0" left.mp3

# 右声道
ffmpeg -i stereo.mp3 -af "pan=mono|c0=c1" right.mp3

单声道转立体声(复制声道)

ffmpeg -i mono.mp3 -ac 2 stereo.mp3

只是左右声道一模一样,不是真的立体声效果。

双声道各自处理

比如左声道人声、右声道伴奏,分别处理再混合。


七、常用音频效果

淡入淡出

# 前 3 秒淡入,最后 3 秒淡出
ffmpeg -i input.mp3 -af "afade=t=in:d=3,afade=t=out:st=27:d=3" output.mp3
  • t=in 淡入,t=out 淡出
  • d=3 持续 3 秒
  • st=27 从第 27 秒开始淡出

均衡器(EQ)

# 提升低音(100Hz 增益 5dB)
ffmpeg -i input.mp3 -af "equalizer=f=100:t=q:w=1:g=5" output.mp3

# 提升高音(5kHz 增益 3dB)
ffmpeg -i input.mp3 -af "equalizer=f=5000:t=q:w=1:g=3" output.mp3

简单调节音色,让声音更闷或更亮。

压缩器(Compressor)

声音忽大忽小时,压缩器把大的压小、小的放大,整体音量更平稳。

ffmpeg -i input.mp3 -af "acompressor=threshold=-20dB:ratio=4:attack=5:release=50" output.mp3
  • threshold=-20dB:超过 -20dB 的部分开始压缩
  • ratio=4:4:1 压缩比
  • attack=5:启动时间 5ms
  • release=50:释放时间 50ms

做语音节目、播客的时候加个压缩器,听感会好很多——不会突然一声吓一跳,也不会小声听不清。

混响(Reverb)

ffmpeg -i input.mp3 -af "aecho=0.8:0.9:1000:0.3" output.mp3

加一点点空间感,干巴巴的人声会自然一些。别加太多,不然像澡堂子里说话。


八、重采样:改采样率和位深

# 48kHz 转 44.1kHz
ffmpeg -i input.wav -ar 44100 output.wav

# 16bit 转 24bit
ffmpeg -i input.wav -sample_fmt s32 output.wav

-ar 改采样率,-sample_fmt 改位深格式。

视频和音频合并的时候,如果采样率不一致,最好先统一,否则播放可能有问题。


九、实战:麦克风录音优化流程

我做售货柜语音模块的时候,总结的一套处理流程:

原始录音 → 降噪 → 压缩 → 响度标准化 → 输出

一条命令搞定:

ffmpeg -i record.wav \
  -af "afftdn=nf=-20,acompressor=threshold=-18dB:ratio=3,loudnorm=I=-16:TP=-1.5:LRA=11" \
  -acodec aac -b:a 64k output.m4a

三步处理完,录音的听感提升一个档次。


十、音频处理的几个原则

1. 能不转码就不转码

有损格式每转一次损失一次。只是改封装、拼接,用 -c copy

2. 处理用无损,输出再压

如果要做多步处理(降噪+压缩+EQ),中间用 WAV 或 FLAC 无损格式,最后一步再转成 MP3/AAC。

3. 前期比后期重要

麦克风选好点、环境安静点,比后期用软件降噪效果好十倍。FFmpeg 是辅助,不是万能的。


十一、本篇小结

  • 音频三要素:采样率、位深、声道数
  • 格式转换:AAC 通用、MP3 兼容好、Opus 低码率强、FLAC 无损
  • 音量:volume 手动调,loudnorm 自动标准化
  • 降噪:afftdn 简单直接,arnndn AI 降噪效果更好
  • 混音:amix 叠加,concat 首尾拼接
  • 效果器:压缩器让音量平稳,EQ 调音色,混响加空间感
  • 处理流程尽量少转码,中间用无损格式过渡

下一篇讲抽帧与截图进阶:精确抽帧、关键帧抽帧、批量生成缩略图、做 YOLO 数据集的最佳实践——做计算机视觉的同学一定会用到。

我是黒漂技术佬。