音频AAC格式简介

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结构

adif_header格式如下:

adif_header

3、ADTS

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

ADTS每一帧

adts_header_error_check
adts_raw_data_block_error_check

3.1、ADTS头

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

固定信息头(adts_fixed_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)结构图如下:

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

你可能感兴趣的:(音频AAC格式简介)