音频编码格式——AAC简介
Posted VNanyesheshou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了音频编码格式——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)
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技术存储了一个声道的全部信息,然后,花很少的字节用参数描述另一个声道和它不同的地方。
在低码率的情况下,HE-AAC,HE-AAC v2编码后的音质要明显好于LC-AAC。而在码率较大后(128kbps),其主观质量逐渐相同。
AAC文件格式
-
ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。
-
ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。这种格式可以用于广播电视。
ADIF只有一个文件头,ADTS每个包前面有一个文件头。
ADIF格式
头信息:
ADTS格式
ADTS的一般格式
… | ADTS_header | AAC ES | ADTS_header | AAC ES | … |
---|
ADTS格式的AAC文件,每一帧由ADTS Header和AAC Audio Data组成。
ADTS_header长度为7或9个字节,头信息分为两部分:adts_fixed_header和adts_variable_header。
其中adts_fixed_header长度固定为 28bit,并且内容是固定的,不跟随包大小变化。而adts_variable_header内容、长度可变,为28bit或44bit。
ADTS 的固定头信息:
- 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的可变头信息:
- 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简介的主要内容,如果未能解决你的问题,请参考以下文章