1. 概念算法
音頻壓縮技術指的是對原始數字音頻信號流(PCM編碼)運用的數字信號處理技術。網站
2. 背景 和 壓縮的必要性編碼
研究發現,直接採用PCM碼流進行存儲和傳輸存在很是大的冗餘度。spa
以CD爲例,其採樣率爲44.1KHz,量化精度爲16比特,則1分鐘的立體聲音頻信號需佔約10M字節的存儲容量,也就是說,一張CD唱盤的容量只有1小時左右。3d
事實上,在無損的條件下對聲音至少可進行4:1壓縮,即只用25%的數字量保留全部的信息,而在視頻領域壓縮比甚至能夠達到幾百倍。視頻
3. 注: 消除冗餘信息是有損編碼blog
4. 有損編碼, 能夠採用消除冗餘信息的思路get
使用傅里葉變換獲得頻域信息,看着該頻域信息圖,咱們來進行遮蔽效應的概念解釋:直播
劃紅線處的藍色音源,威力很大,能把其餘頻率的信息覆蓋,這是遮蔽源。it
你能夠把這個藍色的音源理解爲一個愛吵架的女生,音調很高,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.
.