AAC打包時間計算以及估算平均幀大小

先簡單記錄下最近對AAC音頻學習的打包時間計算以及估算平均幀大小。打包時間,其實是可以音頻處理上通用的;而估算平均幀大小,是由於AAC單個幀的大小並非是固定的,因此估算的是一個平均幀大小。

samples

做音頻,肯定要對samples有所瞭解,其中AAC有以下幾種samples:

PROFILE SAMPLES
HE-AAC v1/v2 2048
AAC-LC 1024
AAC-LD/AAC-ELD 480/512

 

打包時間

打包時間,我們以AAC-LD進行舉例說明,一般在RTP中常用的就是AAC-LD或AAC-ELD。兩者的打包時間有兩種,一個是480,一個是512。以512爲16kHz例進行說明:

16000/512=31.25

也就是說16k的採樣率,一秒內,其需要採樣31.25次。那麼一次的採樣時間,也就是打包時間,就是如下:

1000/31.25=32ms

也就是說,16k,LD/ELD的打包時間其實是32ms。將兩個公式合併下:

32ms=1000*512/16000

也就是:

打包時間=1000*samples/採樣率

但是在與運營商對接這塊,由於傳統的音頻一般採用的是G.711,其打包時間一般是20ms/10ms,一般都是10ms的倍數。而顯然512採樣的AAC-LD/AAC-ELD與20ms/10ms這種轉換並不好轉換。所以很多實用AAC-LD/AAC-ELD並且需要對接都採用的48k以及480的採樣。剛好48k下的480採樣的打包時間爲10ms,可以很好的與G.711這類型的數據做轉換兼容。

估算平均幀大小

接上文,16kHz的採樣率,512採樣,一秒內需要採樣31.25次。如果我們需要的目標帶寬是64kbps。

64000/31.25=2048bits

2048/8=256bytes

也就是目標帶寬64kbps下,16kHz,512採樣,平均一幀的大小是256字節。換算成公式,也就是:

一幀平均大小(bytes)=目標帶寬/(採樣率/samples)/8

一幀平均大小(bytes)=目標帶寬*samples/採樣率/8

其實這個公式,也是適用於G711的,我們將8kHz採樣的64kbps的G711帶入計算:

64000*160/8000/8=160

因爲G711是固定碼率的,所以其每個報文的大小,也就是剛好160bytes了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章