1. 概念
音頻壓縮技術指的是對原始數字音頻信號流(PCM編碼)運用的數字信號處理技術。
2. 背景 和 壓縮的必要性
研究發現,直接采用PCM碼流進行存儲和傳輸存在非常大的冗余度。
以CD為例,其采樣率為44.1KHz,量化精度為16比特,則1分鍾的立體聲音頻信號需占約10M字節的存儲容量,也就是說,一張CD唱盤的容量只有1小時左右。
事實上,在無損的條件下對聲音至少可進行4:1壓縮,即只用25%的數字量保留所有的信息,而在視頻領域壓縮比甚至可以達到幾百倍。
3. 注: 消除冗余信息是有損編碼
4. 有損編碼, 可以采用消除冗余信息的思路
使用傅里葉變換得到頻域信息,看着該頻域信息圖,我們來進行遮蔽效應的概念解釋:
划紅線處的藍色音源,威力很大,能把其他頻率的信息覆蓋,這是遮蔽源。
你可以把這個藍色的音源理解為一個愛吵架的女生,音調很高,1KHz, 嗓門很大(即聲音強度大概在70dB)。
這個女生一扯嗓子,就能把別人的聲音遮蔽掉,
那么這個女生扯嗓子時候最容易把誰的聲音遮蔽掉呢?
這就需要科學來解釋了,上面這張圖就是科學規律的總結。
頻率相近的三個棕色的音源是最容易被遮蔽掉的音源了,上圖也標識出了這些是被遮蔽的聲音。
那是不是只要嗓門(聲音強度)沒這個女生大的音源,都會被覆蓋呢?並不是!
上圖中紅圓圈所示的音源,頻率大概在0.25KHz,聲音強度超過了10dB, 但聲音強度遠遠不及70dB, 你可以把這理解為一個聲音低沉且嗓門也不大的魅力男嗓。
從上圖可以看出,該男嗓未處在愛吵架女生聲音的遮罩門檻內,
且同時也未處在靜音門檻內(一些冰箱、電風扇工作時發出的聲音可能處在靜音門檻范圍內,所以也被遮蔽了),
所以該男嗓的聲音強度雖然不及該女生,但是卻不會被遮蔽。
這就是頻域遮蔽效應的特點了。
在同一個時間點,誰的聲音強度小,就會被遮蔽。
既然我們知道存在這個遮蔽效應這條科學規律,我們就可以通過一定的算法分析出哪些聲音信息是會被遮蔽的,這就是消除冗余信息,是有損編碼的一種實現思路。
5. 無損編碼
熵編碼是無損編碼,具體的編碼方式有很多,如下圖
哈夫曼編碼(Huffman Coding),又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長編碼(VLC)的一種。
Huffman於1952年提出一種編碼方法,該方法完全依據字符出現概率來構造異字頭的平均長度最短的碼字,
有時稱之為最佳編碼,一般就叫做Huffman編碼(有時也稱為霍夫曼編碼)。
6. 音頻編碼過程
7. 常見的音頻編解碼器
注:Speex包含回音消除功能。
8. AAC編碼器介紹
9. ADTS格式頭
AAC前面有個數據頭,一般是ADTS格式的頭。
對於直播系統,一般使用AAC,我們使用的都是ADTS格式。
注意,讀出來Audio Object Types值還需要加1,才是對應的類型。
如果讀出來Audio Object Types值是1,那么對應的是AAL LC類型。
ADTS頭解析網站
PS:
1. 有時候我們無法播放一段AAC數據,可能是缺少了ADTS頭信息,這是我們就需要想辦法加上這個頭信息。
2. 我們在使用ffmpeg時,雖然ADTS這些信息都會被封裝在其內部,但是我們需要具備基本的音視頻知識,以便更好地解決各類可能出現的麻煩問題。
10.
.