AAC 音频编码格式解析


最近在做音频编解码相关的工作,有不少同事迷惑于AAC编解码格式同mp4/m4a编码容器,在此做个详细的AAC解析供编解码入门读者研读。


AAC( Advanced Audio Coding) 自MPEG-2中就已提出其编码标准,包含文件组织格式以及算法模块( TNS, PNS等)。MPEG-4标准中又对其进行了重述修订。

AAC常规的编码格式有两种:ADTS和ADIF


ADIF: Audio Data Interchange Format. 基本的组织格式为一个总的Header跟上raw data.

       

                                    图1. AAC ADIF文件组织格式




表1. AAC ADIF文件组织释义

由于ADIF格式的AAC只有一个总的header,一旦头信息发生错乱或丢包,将无法再进行解码;而且由于没有明确帧分割,所以只能从raw data的起始位置连续解码(即不支持seek),所以ADIF格式AAC多用于文件存储,较少用于网络环境中。


ADTS: Audio Data Transport Stream.  ADTS文件组织中,每帧都有独立的头信息Header, 包含了采样率、声道数、profile等信息。正因为每帧有独立的头信息,所以ADTS 格式AAC具有更好的容错鲁棒特性,在发生帧损毁的情况下,不影响后续码流的解码,所以常用于网络环境下。


                                                        图2. AAC ADTS文件组织格式






表2. AAC ADTS文件组织释义


其中adts_buffer_fullness为0x7ff 时表示码率可变; number_of_raw_data_blocks_in_frame 为0.  码流中实际的blocks数为(number_of_raw_data_blocks_in_frame +1).

raw_data_block中包含的是真正编码后的数据,包含两部分:side_info(编码应用的算法模块信息、全局尺度因子、section等)和data.


阅读更多
换一批

没有更多推荐了,返回首页