音視頻開發從零到整--(2)

音頻編碼

音視頻開發從零到整--(2)

一.為什麼要做音頻編碼?

之前的文章中,我帶著大家來計算過CD音質的數據採樣,每分鐘需要存儲空間約為10.1MB.從存儲的角度或者網絡實時傳播的角度.這個數據量都是太大了.對於存儲和傳輸都是非常具有挑戰的.所以我們需要通過壓縮編碼

壓縮編碼的可能性

壓縮編碼的基本指標就是壓縮比,壓縮比通常小於1(如果等於或者大於1,是不是就失去的壓縮的意義了,壓縮目的就是為了減少數據體量).壓縮算法分為2種,有損壓縮和無損壓縮.

  • 無損壓縮:解壓後的數據可以完全復原.在常用的壓縮格式中,用的較多的都是有損壓縮.
  • 有損壓縮:解壓後的數據不能完全復原,會丟失一部分信息.壓縮比越小,丟失的信息就會越多,信號還原的失真就會越大.

需要根據不同的場景(考慮因素包括存儲設備,傳輸網絡環境,播放設備等),可以選用不同壓縮編碼算法.

壓縮編碼的原理實際上就是壓縮冗餘的信號.冗餘信號就是指不能被人耳感知的信號.包括人耳聽覺範圍之外的音頻信號以及被掩蓋掉的音頻信號.

  • 拓展小課堂

人耳掩蓋效應

  • 主要表現在頻域掩蓋效應與時域掩蓋效應.無論是在時域還是頻域上,被掩蓋掉的信息都認為是冗餘信息,不進行編碼處理
  • 掩蔽效應指人的耳朵只對最明顯的聲音反應敏感,而對於不明顯的聲音,反應則較不為敏感。例如在聲音的整個頻率譜中,如果某一個頻率段的聲音比較強,則人就對其它頻率段的聲音不敏感了。應用此原理,人們發明了mp3等壓縮的數字音樂格式,在這些格式的文件裡,只突出記錄了人耳朵較為敏感的中頻段聲音,而對於較高和較低的頻率的聲音則簡略記錄,從而大大壓縮了所需的存儲空間。在人們欣賞音樂時,如果設備對高頻響應得比較好,則會使人感到低頻響應不好,反之亦然。

常用壓縮編碼格式

WAV編碼

WAV編碼的一種實現方式(其實它有非常多實現方式,但都是不會進行壓縮操作).就是在源PCM數據格式的前面加上44個字節.分別用來描述PCM的採樣率,聲道數,數據格式等信息.

  • 特點:音質非常好,大量軟件都支持其播放
  • 適合場合:多媒體開發的中間文件,保存音樂和音效素材

MP3編碼

MP3編碼具有不錯的壓縮比,而且聽感也接近於WAV文件,當然在不同的環境下,應該調整合適的參數來達到更好的效果.

  • 特點:音質在128Kbit/s以上表現不錯,壓縮比比較高.大量軟件和硬件都支持.兼容性高.
  • 適合場合:高比特率下對兼容性有要求的音樂欣賞.

AAC編碼

AAC是目前比較熱門的有損壓縮編碼技術,並且衍生了LC-AAC,HE-AAC,HE-AAC v2 三種主要編碼格式.

  • LC-AAC 是比較傳統的AAC,主要應用於中高碼率的場景編碼(>= 80Kbit/s)
  • HE-AAC 主要應用於低碼率場景的編碼(<= 48Kbit/s)
  • 特點:在小於128Kbit/s的碼率下表現優異,並且多用於視頻中的音頻編碼
  • 適合場景:於128Kbit/s以下的音頻編碼,多用於視頻中的音頻軌的編碼

Ogg編碼

Ogg編碼是一種非常有潛力的編碼,在各種碼率下都有比較優秀的表現.尤其在低碼率場景下.Ogg除了音質好之外,Ogg的編碼算法也是非常出色.可以用更小的碼率達到更好的音質.128Kbit/s的Ogg比192Kbit/s甚至更高碼率的MP3更優質.但目前由軟件還是硬件支持問題,都沒法達到與MP3的使用廣度.

  • 特點:可以用比MP3更小的碼率實現比MP3更好的音質,高中低碼率下均有良好的表現,兼容不夠好,流媒體特性不支持.
  • 適合場景:語言聊天的音頻消息場景


分享到:


相關文章: