AAC格式

1,280 阅读1分钟

概述

根据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个比特
      }
    }
  }

开源项目

参考

  1. AAC 文件解析及解码流程 很详细的技术分析文章