AAC(高级音频解码)音频格式: 是一种由mpeg-4标准定义的有损音频压缩格式。
AAC格式分为2 种: ADIF(音频数据交换格式)和 ADTS (音频的传输流格式),ADIF只有一个统一的头,可以确定的找到这个音频数据的开始,必须得到所有的数据后才能解码,常用在磁盘文件中。ADTS则是每一帧都有头信息,可以在任意帧解码,它是一个有同步字的比特流,解码可以在这个流中任何位置开始。
两者的组织结构如下:

目前一般编码后和抽取出的都是ADTS格式的音频流,当编码ACC裸流时出现写出来的不能播放出来,可能就是AAC文件的每一帧数据缺少ADTS头信息,加入ADTS头信息对原始数据帧进行封装,就形成了ADTS帧。
AAC(ADTS格式)文件的每一帧由ADTS Header和AAC AUdio Data组成。结构体如下:

每一帧的ADTS头文件信息都包含了音频的采样率、声道、帧长度等信息,一般情况下ADTS的头信息都是7个字节(也有9个字节),分为固定头信息和可变头信息2部分,固定头信息中的数据每一帧都相同,可变头信息则在帧与帧之间可变。





接下来看看可变头信息adts_variable_header();

TS流数据中的音频数据中自带了ADTS头信息,不需要开发者另外再增加ADTS头信息。ADTS头信息的代码片段如下:
