1、简介
AAC全称Advanced Audio Coding(高级音频编码),属于MPEG-2规范的一部分。属于有损压缩。格式上分为两种ADIF(Audio Data Interchange Format) 和 ADTS(Audio Data Transport Stream)。
2、ADIF
全称:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。
adif由:adif_header、byte_alignment、raw_data_stream组成。

adif_header格式如下:

3、ADTS
全称:Audio Data Transport Stream 音频数据传输流。这种格式的特征是在每一帧的开头都有一个固定头部,可以在任意一帧做解码。
ADTS每一帧的组成图如下:




3.1、ADTS头
ADTS头包含了采样率、声道数、帧同步标示 等信息。ADTS头由一个28位的固定信息头(adts_fixed_header)、一个28位可变信息头(adts_variabl_header) 二部分构成。固定头每一帧都是固定的,可变头每一帧之间是不相同的。
固定信息头(adts_fixed_header)结构图如下:

- syncword: 帧同步标示(也可以叫做帧与帧之间的分割标示、一个帧开始的标示。),12位的二进制字符串 1111 1111 1111 (也可以用0xFFF表示)。
- ID: MPEG 标示符。0表示MPEG-4,1表示MPEG-2
- layer:当前使用层,固定‘00’ (可选值有:00=层1、01=层2、10=层3、11=保留)
- protection_absent: 是否需要进行CRC校验,0表示需要(会在帧头后面增加16位的校验位),1表示不需要。
- profile: AAC配置文件类型,1=Main Profile,2=LC Profile, 3=SSR Profile
- sampling_frequency_index:采样率索引值
- private_bit:私有位,编码时设置为0,解码时忽略
- channel_configuration:声道数
- original_copy:编码时设置为0,解码时忽略
- home:编码时设置为0,解码时忽略
采样率索引值如下:

声道数配置如下:

可变信息头(adts_variabl_header)结构图如下:

- copyright_identification_bit:默认值位0
- copyright_identification_start:默认值位0
- aac_frame_length:每一帧长度(header长度+CRC校验长度+aac原始数据长度)
- adts_buffer_fullness:0x7FF 说明是码率可变的码流
- number_of_raw_data_blocks_in_frame:表示raw_data_block()的个数,raw_data_block()个数=number_of_raw_data_blocks_in_frame+1,最小值为0。
CRC校验
全称:Cyclic Redundancy Check(循环冗余校验码)。ADTS模式中,CRC算法采用的是CRC-16,关于CRC算法更多可以戳这里
参考文献:
- ISO/IEC 11172_3
- ISO/IEC 13818-7_2006
网友评论