概述
根据AAC编码的音频格式,可以是网络媒体上传输的裸数据,也可以保存为独立的文件。如保存为独立文件时,后缀有.aac,.m4a,.mp4(注意是纯音频)三种。
原理及技术点
AAC header
AAC编码的数据开始都会有AAC头,一共有2种AAC头格式,一种是StreamMuxConfig,另一种是AudioSpecificConfig(ASC),具体格式见后续。
audioObjectType: 基本的object type用5个比特表示。2是AAC-LC,5是SBR,29是PS。
samplingFrequencyIndex: 4个比特,用来表示采样率表中的索引号
channelConfiguration: 4个比特,声道数
if (audioObjectType == 5 || audioObjectType == 29)
extensionSamplingFrequencyIndex: 4个比特,表明实际的音频采样率
audioObjectType: 5个比特,表明基本层编码的AOT
GASpecificConfig
frameLengthFlag: 1个比特,0表示帧长为1024,1表示帧长为960
DependsOnCoreCoder: 1个比特
extensionFlag: 1个比特
剩余的扩展字段
syncExtensionType: 11个比特,0x2b7表示HE-AAC的扩展
if (syncExtensionType == 0x2b7) {
extensionAudioObjectType: 5个比特
if ( extensionAudioObjectType == 5 ) {
sbrPresentFlag: 1个比特
if (sbrPresentFlag == 1) {
extensionSamplingFrequencyIndex: 4个比特
}
}
}
开源项目
参考
- AAC 文件解析及解码流程 很详细的技术分析文章