直播中須要瞭解的AAC基礎知識

Android 開發筆記 onGithubphp

參考維基百科知乎問題等資料對AAC格式進行總結,沒有特別深刻到細節,目的是讓你們對AAC有一個整體的認識。html

1.AAC是什麼

高級音頻編碼(英語:Advanced Audio Coding,AAC),出現於1997年,基於MPEG-2音頻編碼技術。由Fraunhofer IIS、杜比實驗室、AT&T、Sony、Nokia等公司共同開發。2000年,MPEG-4標準出現後,AAC從新集成了其特性,加入了SBR技術和PS技術,爲了區別於傳統的MPEG-2 AAC又稱爲MPEG-4 AAC。git

2.AAC封裝格式


(參考鵬小鶘在問題AAC-LC 是什麼格式?和 AAC 有什麼區別?中的回答)github

參考知乎的問題,AAC的音頻文件格式經常使用的有如下兩種:性能

  • ADIF Audio Data Interchange Format 音頻數據交換格式。這種格式的特徵是能夠肯定的找到這個音頻數據的開始,不需進行在音頻數據流中間開始的解碼,即它的解碼必須在明肯定義的開始處進行。故這種格式經常使用在磁盤文件中。
  • ADTS Audio Data Transport Stream 音頻數據傳輸流。這種格式的特徵是它是一個有同步字的比特流,解碼能夠在這個流中任何位置開始。 簡言之。ADIF只有一個文件頭,ADTS每一個包前面有一個文件頭。

因此在直播等領域用的最多的仍是ADTS。編碼

ADTS的頭信息分爲兩部分,一個是固定頭信息、緊接着是可變頭信息。 固定頭信息spa

可變頭信息

合起來.net

更直觀一點:orm

因此必需要了解ADTS封裝的格式,不然就不能本身講AAC打包到ADTS。cdn

在FFmpeg的adtsenc.c 中定義了adts_write_frame_header方法,能夠寫ADTS頭,你們能夠參考。

2.1.部分參數介紹

序號5的profile是AOT - 1,AOT參考這裏

0: Null 1: AAC Main 2: AAC LC (Low Complexity) 3: AAC SSR (Scalable Sample Rate) 4: AAC LTP (Long Term Prediction) 5: SBR (Spectral Band Replication) 6: AAC Scalable 7: TwinVQ 8: CELP (Code Excited Linear Prediction) ....省略若干type

adts_buffer_fullness:0x7FF 說明是碼率可變的碼流。


3.AAC規格

由於AAC是一個龐你們族,他們共分爲9種規格,以適應不一樣場合的須要,也正是因爲AAC的規格(Profile)繁多,致使普通電腦用戶感受十分困擾: MPEG-2 AAC LC低複雜度規格(Low Complexity) MPEG-2 AAC Main主規格 MPEG-2 AAC SSR可變採樣率規格(Scaleable Sample Rate) MPEG-4 AAC LC低複雜度規格(Low Complexity),如今的手機比較常見的MP4文件中的音頻部分就包括了該規格音頻文件 MPEG-4 AAC Main主規格 MPEG-4 AAC SSR可變採樣率規格(Scaleable Sample Rate) MPEG-4 AAC LTP長時期預測規格(Long Term Predicition) MPEG-4 AAC LD低延遲規格(Low Delay) MPEG-4 AAC HE高效率規格(High Efficiency) 上述的規格中,主規格(Main)包含了除增益控制以外的所有功能,其音質最好,而低複雜度規格(LC)則是比較簡單,沒有了增益控制,但提升了編碼效率,至「SSR」對「LC」規格大致是相同,可是多了增益的控制功能,另外,MPEG-4 AAC/LTP/LD/HE,都是用在低比特率下編碼,特別是「HE」是有Nero AAC編碼器支持,是近來經常使用的一種編碼器,不過一般來講,Main規格和LC規格的音質相差不大,所以目前使用最多的AAC規格多數是「LC」規格,由於要考慮手機目前的內存能力未達合理水準。 MPEG-4 AAC LC(Low Complexity)是最經常使用的規格,咱們叫「低複雜度規格」,咱們簡稱「LC-AAC」,這種規格在中等碼率的編碼效率以及音質方面,都能找到平衡點。所謂中等碼率,就是指:96kbps-192kbps之間的碼率。所以,若是要使用LC-AAC規格,請儘量把碼率控制在以前說的那個區間內。 附加一篇參考文章:AAC規格(LC,HE,HEv2)及性能對比


參考

ADTS:

相關文章
相關標籤/搜索