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

2021-10-02 12:43:06 字數 1342 閱讀 5498

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

做音訊,肯定要對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了。

解決AAC音訊編碼時間戳計算問題

西北望鄉何處是,東南見月幾回圓。昨風一吹無人會,今夜清光似往年。本文所涉及到的計算方法和api,為在android環境下。使用audiorecord音訊錄製,mediacodec編碼aac格式音訊,同時使用mediamuxer封裝aac格式音訊檔案。aac編碼有兩種計算時間戳的方式。第一種 使用pc...

Jmeter平均響應時間和TPS的計算方法

jmeter的throughput和平均rt的計算 1.tps 每秒處理的事務數,jmeter的throughput為吞吐率 請求數 秒 在加了事務控制器後,tps throughput 巨集觀上 tps 併發數 響應時間,jmeter的throughput number of requests t...

iOS 獲取當前時間以及計算年齡(時間差)

nsdate now nsdate date nslog now date is now nscalendar calendar nscalendar currentcalendar nsuinteger unitflags nsyearcalendarunit nsmonthcalendaruni...