AAC(Advanced Audio Coding)是一种音频编码技术,出现于1997年,基于MPEG-2的音频编码技术。AAC具有高效的数据压缩能力和较高的音质,适用于各种音频应用场景。例如,在智能设备中,AAC技术被广泛应用于提升用户体验,提供高质量的音频体验。
一、FFmpeg 支持的 AAC 编码器对比
编码器 | 特性 | 适用场景 |
---|---|---|
aac | FFmpeg 原生实现,2015年后稳定支持,支持 LC-AAC 规格,兼容性高但音质略逊于第三方编码器 | 基础音频编码、兼容性优先场景 |
libfdk_aac | 第三方编码器(需启用 --enable-nonfree 编译3),支持 HE-AAC v1/v2,音质最优 |
高音质需求(如音乐流媒体) |
libaac | 第三方编码器,非 GPL 协议,性能与兼容性介于原生与 libfdk_aac 之间 | 商业项目(需规避 GPL 限制) |
二、关键参数与封装格式
-
AAC 封装格式
- ADTS (Audio Data Transport Stream):适用于流媒体传输(如直播),每帧含独立头部信息,支持随机解码。
- ADIF (Audio Data Interchange Format):需完整文件头,适合本地存储(如 .m4a 文件)。
-
核心参数设置
- 比特率控制:
- 恒定比特率(CBR):
-b:a 128k
(立体声推荐值)。 - 动态比特率(VBR):
-vbr 4
(libfdk_aac 支持,数值范围 1-5,越高音质越好)。
- 恒定比特率(CBR):
- 采样率与格式:
- FFmpeg 新版本默认支持 32 位浮点型(
AV_SAMPLE_FMT_FLTP
)
- FFmpeg 新版本默认支持 32 位浮点型(
- 比特率控制: