音頻的幀、採樣率、Hz、比特率
下面的概念非官方,只是自己的理解
1.採樣率:
表示每秒採集多少次聲音數據,以秒爲單位,大部分會將其轉換爲ms(毫秒)計算。
eg.44100Hz(秒)
2.位深度:
表示每次採集聲音數據的大小,單位爲位(bit)。
eg. 在Android中的AudioFormat.ENCODING_PCM_16BIT表示一次採集16bit。
3.通道數:
音頻的聲道數
1個採樣點只針對一個聲道,而實際上可能會有一或多個聲道。
總結一:
由1,2,3概念得:
一次的採集數據大小*一秒的採集次數*通道數=採樣率*位深度*通道數=一秒的採集數據總數(bit)
4.比特率(碼率)
每秒傳送的比特(bit)數。單位爲 bps(Bit Per Second),比特率越高,傳送的數據越大,音質越好.
公式:
比特率 =採樣率 x 採用位數 x聲道數.
1kbps=1000bit/s=1000/8(B/s).
1Mbps=1024Kbps=1024*1024bit/s
注意:大寫K----1024,小寫k------1000
例題1:
已知音頻碼率爲m(單位kbps),視頻碼率爲v(單位B/s),傳輸時間爲t(單位s),根據上面的公式,計算輸出文件大小(單位 M)???
統一音視頻碼率的單位:
m2=m*1000/8(B/s)
文件大小=音頻的大小+視頻大小=(音頻碼率+視頻碼率)*t=(m2+v)*t(單位B)=(m*1000/8+v)*t/1024/1024(單位M)
5.幀:
對於聲音來說,播放一下的單位,對視頻來說,就是一個畫面。在目前的聲卡驅動程序中,其內部緩衝區也是採用Frame作. 爲單位來分配和管理的。
1單位的Frame=1個採樣點的字節數×聲道數
公式:
音頻幀的播放時間=採集一幀的時間=一個AAC幀對應的採樣樣本的個數/採樣頻率
大前提:採樣率爲44100Hz,位深度爲8bit,通道數1個。
例題1:
構建一個ACC幀需要1024個sample的採樣數據,計算該幀的播放時間???
一個sample=採集一次
1024/44100=0.02322s=23.22ms(四捨五入)
例題2:
mp3 每幀均爲1152個字節,採樣率爲44100Hz,計算該幀的播放時間???
已知:
由大前提可知:一次的採樣大小=位深度*通道數=8bit=1byte(字節)
所以
播放時間*採樣率*一次的採樣大小=1152
==》播放時間=1152/採樣率*1=1152/44100=0.02608s(四捨五入)=26.08ms
由前5個概念,我們可以直到幀率(f)與碼率(m)的關係:
RGB24每幀的大小:size=width×heigth×3 Byte
RGB32每幀的大小是:size=width×heigth×4 Byte
YUV420每幀的大小是:size=width×heigth×1.5 Byte
m=f*size*8 bps
參考文檔:
https://www.cnblogs.com/renhui/p/7463287.html
https://www.cnblogs.com/cai1432452416/p/11828008.html(視頻轉換(壓縮)時比特率和分辨率對照表)