音频编码格式——AAC简介

AAC (Advanced Audio Coding),高级音频编码,是一种声音数据压缩格式。基于1997年,目的是为了取代MP3格式。

  • 优点:相较于mp3,AAC格式的音质更佳,文件更小。
  • 不足:AAC属于有损压缩的格式,与时下流行的APE、FLAC等无损格式相比音质存在“本质上”的差距。加之,传输速度更快的USB3.0和16G以上大容量MP3正在加速普及,也使得AAC头上“小巧”的光环不复存在。

AAC规格

AAC规格有十几种,常用的三种AAC规格:

  • LC-AAC(最基本的)
  • HE-AAC(AACPlus v1)
  • HE-AAC v2(AACPlus v2)

音频编码格式——AAC简介_第1张图片

  • LC:(Low Complexity)低复杂度规格,现在的手机比较常见的MP4文件中的音频部份就包括了该规格音频文件

  • HE:(High Efficiency)高效性。HE-AAC v1(又称AACPlusV1,SBR),用容器的方法实现了AAC(LC)和SBR技术。SBR其实代表的是Spectral Band Replication(频段复制)。简要叙述一下,音乐的主要频谱集中在低频段,高频段幅度很小,但很重要,决定了音质。如果对整个频段编码,若是为了保护高频就会造成低频段编码过细以致文件巨大;若是保存了低频的主要成分而失去高频成分就会丧失音质。
    SBR把频谱切割开来,低频单独编码保存主要成分, 通过从低频段进行换位来实现高频段(基于对音频信号的高频范围和低频范围之间的强相关性的认识),通过SBR数据指导、补偿可能丢失的高频分量来进行高频带的重建,在低码率的情况下还保存了音质,完美的化解这一矛盾。

  • HEv2:用容器的方法包含了HE-AAC v1和PS技术。PS指“parametric
    stereo”(参数立体声)。原来的立体声文件文件大小是一个声道的两倍。但是两个声道的声音存在某种相似性,根据香农信息熵编码定理,相关性应该被去
    掉才能减小文件大小。所以PS技术存储了一个声道的全部信息,然后,花很少的字节用参数描述另一个声道和它不同的地方。

音频编码格式——AAC简介_第2张图片
在低码率的情况下,HE-AAC,HE-AAC v2编码后的音质要明显好于LC-AAC。而在码率较大后(128kbps),其主观质量逐渐相同。

AAC文件格式

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

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

ADIF只有一个文件头,ADTS每个包前面有一个文件头。

ADIF格式

在这里插入图片描述
头信息:
音频编码格式——AAC简介_第3张图片

ADTS格式

ADTS的一般格式

ADTS_header AAC ES ADTS_header AAC ES

ADTS格式的AAC文件,每一帧由ADTS Header和AAC Audio Data组成。
ADTS_header长度为79个字节,头信息分为两部分:adts_fixed_header和adts_variable_header。
其中adts_fixed_header长度固定为 28bit,并且内容是固定的,不跟随包大小变化。而adts_variable_header内容、长度可变,为28bit或44bit。

ADTS 的固定头信息:
音频编码格式——AAC简介_第4张图片

  • syncword :总是0xFFF, 代表一个ADTS帧的开始, 用于同步.
  • ID:MPEG Version: 0 for MPEG-4,1 for MPEG-2
  • Layer:always: ‘00’
  • protection_absent:Warning, set to 1 if there is no CRC and 0 if there is CRC
  • profile:表示使用哪个级别的AAC,如01 Low Complexity(LC) – AAC LC
    profile的值等于 Audio Object Type的值减1.
  • sampling_frequency_index:采样率的下标
  • private_bit:私有位,编码时设置为0,解码时忽略
  • channel_configuration:标识声道数
  • original_copy:编码时设置为0,解码时忽略
  • home:编码时设置为0,解码时忽略

当protection_absend为1时表示无crc, ADTS可变头长度 为28bit,为0时,可变头长度为44bit.

ADTS的可变头信息:
音频编码格式——AAC简介_第5张图片

  • copyright_identification_bit:编码时设置为0,解码时忽略
  • copyright_identification_start:编码时设置为0,解码时忽略
  • aac_frame_length:ADTS帧长度包括ADTS长度和AAC声音数据长度的和。即 aac_frame_length = - (protection_absent == 0 ? 9 : 7) + audio_data_length
  • adts_buffer_fullness:固定为0x7FF。表示是码率可变的码流
  • number_of_raw_data_blocks_in_frame:表示当前帧有number_of_raw_data_blocks_in_frame + 1 个原始帧(一个AAC原始帧包含一段时间内1024个采样及相关数据)。

AAC 文件查看工具:AAC Audio ES Viewer

音频编码格式——AAC简介_第6张图片

你可能感兴趣的:(Android,音频,AAC,音频编码,音频格式)