AAC编码器介绍

190 阅读2分钟

AAC(Advanced Audio Coding)由Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同开发, 目的是取代MP3格式.

最开始是基于MPEG-2的音频编码技术, MPEG-4标准出现后, AAC重新集成了其特性, 加入了SBR技术和PS技术.

目前常用的规格有AAC LC、AAC HE V1、AAC HE V2, V1用的相对较少, 因为已经被V2取代.

AAC 规格描述

  • AAC LC : ( Low Complexity ) 低复杂度规格, 码流是128k, 音质好.

  • AAC HE V1 : 等于 AAC LC + SBR ( Spectral Band Replication ) , 其核心思想是按频谱保存. 低频编码保存主要成分, 高频单独放大编码保存音质. 码流在64k左右.

  • AAC HE V2 : 等于 AAC LC + SBR + PS ( Parametric Stereo ) , 其核心思想是双声道中的声音存在某种相似性, 只需存储一个声道的全部信息, 然后, 花很少的字节用参数描述另一个声道和它不同的地方.

AAC格式

  • ADIF( Audio Data Interchange Format ) : 这种格式的特征是可以确定的找到这个音频数据的开始, 只能从头开始解码, 不能在音频的数据流中间开始(但是解码完成后 播放的时候可以从任何地方开始). 这种格式常用在磁盘文件中.

  • ADTS( Audio Data Transport Stream ) : 这种格式的特征是每一帧都有一个同步字, 所以可以在音频流的任何位置开始解码, 它类似于数据流格式, 适用于直播系统.

ADTS结构

Audio Object Types

1 : AAC Main

2 : AAC LC

...

5: SBR

...

29: PS

...

以上列表中 序号 -1 才是真实的header中每一位的值, 同理获取到object types + 1 才能对应到该类型的含义.

Sampling Frequency Index

    协议中以编号代替采样率的值.

可以通过以下网址查看AAC Frame Header 的具体含义:

www.p23.nl/projects/aa…

  •  ffmpeg提供相应的接口, 不用开发人员手动使用C/C++编写ADTS头.

  • 作为开发者应该知道, 我们拿到一个aac 文件, 里面是有ADTS头的, 如果该文件无法正常播放, 可能是因为ADTS头的问题.