AAC音频格式分析

来源:互联网 发布:占中事件知乎 编辑:程序博客网 时间:2024/05/22 03:38

AAC音频格式分析

AAC音频格式有ADIF和ADTS:

ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。这种格式常用在磁盘文件中。

ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。

简单说,ADTS可以在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,所以必须得到所有的数据后解码。且这两种的header的格式也是不同的,目前一般编码后的和抽取出的都是ADTS格式的音频流。

语音系统对实时性要求较高,基本是这样一个流程,采集音频数据,本地编码,数据上传,服务器处理,数据下发,本地解码

ADTS是帧序列,本身具备流特征,在音频流的传输与处理方面更加合适。


ADTS帧结构:

header

body

ADTS帧首部结构:

序号长度(bits)说明1Syncword12all bits must be 12MPEG version10 for MPEG-4, 1 for MPEG-23Layer2always 04Protection Absent1et to 1 if there is no CRC and 0 if there is CRC5Profile2the MPEG-4 Audio Object Type minus 16MPEG-4 Sampling Frequency Index4MPEG-4 Sampling Frequency Index (15 is forbidden)7Private Stream1set to 0 when encoding, ignore when decoding8MPEG-4 Channel Configuration3MPEG-4 Channel Configuration (in the case of 0, the channel configuration is sent via an inband PCE)9Originality1set to 0 when encoding, ignore when decoding10Home1set to 0 when encoding, ignore when decoding11Copyrighted Stream1set to 0 when encoding, ignore when decoding12Copyrighted Start1set to 0 when encoding, ignore when decoding13Frame Length13this value must include 7 or 9 bytes of header length: FrameLength = (ProtectionAbsent == 1 ? 7 : 9) + size(AACFrame)14Buffer Fullness11buffer fullness15Number of AAC Frames2number of AAC frames (RDBs) in ADTS frame minus 1, for maximum compatibility always use 1 AAC frame per ADTS frame16CRC16CRC if protection absent is 0

如:unsigned char AACBEGIN[7] = {0xFF,0xF1,0x48,0x40,0x26,0x7F,0xFC}; // 6.4K