計算音頻幀的播放時間(音頻碼流 音頻幀)


音頻碼流(冗余數據占的比例):
先簡單講一下對於ADTS header的結構的理解:
1)ADTS header位於每一個aac幀的開頭,長度一般是7字節(也可以是9字節的,沒見過)。
2)每個aac幀的長度固定為1024個sample(可以是1024*n,沒見過n>1的情況)。
3)ADTS header中大部分信息無用,有用的只有采樣率(4bit)、聲道數(3bit)和幀的大小(13bit),這三項總共只有20bit。
mp4格式會集中存放每一個frame的index,每個index占4個字節。但因為mp4本身還有其他tag,所以對於較短的小文件冗余依然比ADTS大。
如一個20kpbs的48kHz he-aac語音,如果用ADTS存放,冗余數據占的比例可以這么計算
1、每秒的音頻數據量是20/8=2560 Byte;
2、每秒的音頻幀數是24000/1024=23.4375幀;(由於編碼的aac算法是he-aac,它自帶sbr技術,因此SBR只有一半的采樣率)待實際驗證
3)每秒ADTS header的大小是7*23.4375=164.0625 Byte
4) 冗余數據占的比例是164.0625 / 2560 = 6.4%
可見還是相當大的
mp4格式會集中存放每一個frame的index,每個index占4個字節。但因為mp4本身還有其他tag,所以對於較短的小文件冗余依然比ADTS大。

===============================================================================================
采樣頻率是指將模擬聲音波形進行數字化時,每秒鍾抽取聲波幅度樣本的次數。
。正常人聽覺的頻率范圍大約在20Hz~20kHz之間,根據奈奎斯特采樣理論,為了保證聲音不失真,采樣頻率應該在40kHz左右。常用的音頻采樣頻率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采樣頻率,還可以達到DVD的音質
對采樣率為44.1kHz的AAC音頻進行解碼時,一幀的解碼時間須控制在23.22毫秒內。
背景知識:
(一個AAC原始幀包含一段時間內1024個采樣及相關數據)根據aac文檔
分析:
1 AAC
音頻幀的播放時間=一個AAC幀對應的采樣樣本的個數/采樣頻率(單位為s)
一幀 1024個 sample。采樣率 Samplerate 44100KHz,每秒44100個sample,
所以 根據公式
音頻幀的播放時間=一個AAC幀對應的采樣樣本的個數/采樣頻率
(NOTE:該時間可作解碼時間的參考,解碼時間應偏差確保在該時間的一定范圍,異常的話,做一定的異常處理)
如,當前AAC一幀的播放時間是= 1024*1000000/44100= 22.32ms(單位為ms)

當前AAC一幀的播放時間是= 1024/44100 = 0.02232 s(單位為秒)=22.32ms(單位為ms)
反過來,如當想通過音頻緩沖多少ms來計算實際應緩沖多少個音頻幀時,可下計算:
比如對48K緩沖300ms需要多少個buffer,
buffer = 一秒內能產生多少個音頻幀(48000/1024) 乘以 時間比例(300/1000) = (48000*300)/(1024*1000) = 14.0625個。

2 MP3
mp3 每幀均為1152個字節, 則:
frame_duration = 1152 * 1000000 / sample_rate
例如:sample_rate = 44100HZ時, 計算出的時長為26.122ms,這就是經常聽到的mp3每幀播放時間固定為26ms的由來。

===============================================================================================
音視頻流的發送
1 請教大伙
我只做過 MPEG4視頻流的RTP打包傳輸 接收
現在加入了音頻采集 所以要發送 音視頻流
我想請問大伙 在發送時 一般的做法是 音視頻流分開發送
還是 發送音視頻的合成流?
答案:
直播考慮實時性的話,就可能要考慮丟視頻包、保音頻包;分開傳輸比較好
點播不考慮實時性、要求同步的話,可以進行緩沖;合並傳輸比較好

現在的話 對合成流打包 就不需要有什么講究了吧
在接收端 解RTP包 在接 分解 filter 再 分別解壓音視頻流


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM