AAC高级音频编码是什么?
AAC(Advanced Audio Coding),中文名是高级音频编码。它是由Fraunhofer IIS、杜比实验室、AT&T、索尼等公司基于MPEG-2的音频编码技术共同开发的,目的是为了取代MP3格式。随着MPEG-4标准出现后,AAC又重新集成了SBR技术和PS技术,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。
AAC规格分类
一般来说,AAC音频编码格式有三种规格:LC-AAC(最基本),HE-AAC(AACPlus v1),HE-AAC v2(AACPlus v2),他们三者的关系如下图所示:
HE-AAC v2相比较基础的AAC(LC)格式和HE-AAC格式,存在如下等式关系:
HE-AAC v2 = LC-AAC + SBR + PS
HE-AAC v2 = HE-AAC + PS
AAC格式分类
AAC根据不同的数据组成形式可以分为两种格式,分别是ADIF和ADTS。
ADIF
ADIF (Audio Data Interchange Format),中文全称是音频数据交换格式。它的特点是配置信息存储在整个文件的开头,只能从文件起始点开始解码,比较适合用于本地文件存储。
ADIF格式的音频文件数据形式如下图所示:
ADIF 头信息
ADIF的头信息存在音频文件的头部,一般只存在一份,其中包含了码流类型、码率大小等信息,具体字段和占位大小如下图所示:
其中,字段含义如下:
adif_id:ADIF类型标识,固定为“ADIF”。
bitstream_type:码流类型,0:CBR,固定码率模式;1:VBR,可变码率模式。
bitrate:码率大小,CBR时,表示码率大小;VBR时,表示峰值码率大小;0值时,表示unknown。
ADTS
ADTS (Audio Data Transport Stream),中文全称是音频数据传输流。他的特点是存在同步字节(12bits,0xFFF)的标识,而且每一帧AAC都有头信息,因此可以从任意帧和位置开始解码,比较适合直播流场景中。
ADTS格式的音频(文件)数据形式如下图所示:
- ADTS 固定头信息
ADTS的固定头信息在每个音频帧中都是一样的,包含了编码级别、采样率、声道数等信息,具体字段和占位大小如下图所示:
其中,字段含义如下:
syncword:帧同步,标识一个帧的开始,固定为0xFFF。
ID:MPEG 标示符,0表示MPEG-4,1表示MPEG-2。
layer:固定为’00’。
protection_absent:标识是否进行误码校验,0表示有CRC校验,1表示没有CRC校验。
profile:标识使用哪个级别的AAC,1: AAC Main 2: AAC LC (Low Complexity) 3: AAC SSR (Scalable Sample Rate) 4: AAC LTP (Long Term Prediction)。
sampling_frequency_index:标识使用的采样率的下标,具体采样率可以对照下表得到。
private_bit:私有位,编码时设置为0,解码时忽略。
channel_configuration:标识声道数,具体声道数可以对照下表得到。
original_copy:编码时设置为0,解码时忽略。
home:编码时设置为0,解码时忽略。
- 可变头信息
每个ADTS头中的可变部分,记录该AAC音频帧的数据大小以及有多少个数据块,具体字段和占位大小如下图所示:
其中,字段含义如下:
copyrighted_id_bit:编码时设置为0,解码时忽略。
copyrighted_id_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音频文件,大多数情况是ADIF;如果是AAC音频码流,大多数情况是ADTS。但是为了避免误判,在处理AAC音频时还是参考下面的步骤:
1、判断AAC格式类型,判断是ADIF或者ADTS。
2、若为ADIF,解ADIF头信息,跳至第6步。
3、若为ADTS,寻找同步头。
4、解ADTS帧头信息。
5、若有错误检测,进行错误检测。
6、解块信息。
7、解元素信息。
AAC 在 ZEGO SDK 的应用
目前,音频编解码技术被广泛的应用于社会生活的方方面面,比如互动直播、在线教学、视频会议等。AAC 作为 RTC 场景下常用的编解码格式,ZEGO 的音视频SDK自然支持,音频编码&码率支持情况:
- HE_AAC: 10k ~ 64k(双声道支持最高128k)、
- AAC_LC: 10k ~ 192k
ZEGO SDK 支持开发者根据实际需求,自定义音频码率。同时也提供了不同音质标准的预设配置,供开发者直接选用:基础音质 (16 kbps, 单声道)、标准音质 (48 kbps, 单声道;56 kbps, 双声道)、高音质 (128 kbps, 单声道;192 kbps, 双声道)。
总之,ZEGO 提供音视频的现成方案,降低开发者使用音频编解码技术的难度,体验入口:https://doc-zh.zego.im/article/4438
关于音频编解码更多详细内容可以参考文章:
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/42495.html