音視頻編解碼基礎

現代互聯網的發展歷程經歷了文字--聲音/圖片--視頻這麼幾個階段,從最開始人們之間發消息、打電話起,過渡到可以互相發送圖片,再到現在網路視頻和直播的興起,人與人之間的距離不斷地被拉近,交流也更加方便、直觀。由於工作中主要涉及到視頻方面的相關知識,因此對視頻的編解碼進行一點簡單的研究,是很有必要的。

流媒體技術的基本過程

總體上說,視頻從產生到傳遞到觀看者之間的過程主要分為這麼幾個階段:錄製—編碼—傳輸—解碼—播放

  • 錄製:即視頻的製作者利用各種攝像設備,將現實中的一些連續的場景片段記錄下來。
  • 編碼:對錄製好的視頻進行格式化處理,以方便在網路上傳輸。主要有對視頻和音頻分別進行壓縮編碼、將音視頻進行打包封裝兩個步驟。
  • 傳輸:將視頻上傳到源站伺服器上,然後用戶端再從伺服器上拉取視頻。有時為了系統的穩定性和用戶體驗,需要再中間添加CDN節點,由CDN節點去源站伺服器上拉取,用戶再根據某個規則去對應的CDN伺服器上進行拉流。
  • 解碼:是編碼的逆過程,需要對從網路上獲取的數據進行解協議,得到該視頻的封裝包,再解包,分別得到經過編碼的音頻和視頻數據,最後再將這些音視頻數據按照對應的編碼格式進行解碼。
  • 播放:也稱作渲染的過程。對解碼出來的音頻和視頻進行同步,而後就可以在播放器端進行播放了。

研究的重點在於編解碼上,由於解碼是編碼的逆過程,所以在此只畫出解碼過程圖,具體如圖所示:

圖片參考自雷霄驊的博客

多媒體的格式分類

封裝格式

封裝格式就是將視頻壓縮數據和音頻壓縮數據打包起來,以特定的方式將他們合併成一個文件。所以總體上各種封裝格式之間並沒有太大的不同。不過也有優劣之分,有的封裝格式幾乎支持所有的音視頻編碼,而有的只支持很少的音視頻編碼。常見的封裝格式有以下幾種:

  • AVI(Audio Video Interleave):只能封裝一條視頻軌和音頻軌,不能封裝文字,沒有任何控制功能,因而也就無法實現流媒體,其文件擴展名是.avi。
  • WMV(Windows Media Video):具有數字版權保護功能,其文件擴展名是.wmv/.asf。
  • MPEG(Moving Picture Experts Group):可以支持多個視頻、音軌、字幕等,控制功能豐富,其文件擴展名是.mp4。
  • Matroxska:提供非常好的交互功能,比MPEG更強大,其文件擴展名是.mkv。
  • QuickTime File Farmat:由Apple開發,可存儲內容豐富,支持視頻、音頻、圖片、文字等,其文件擴展名是.mov。
  • FLV(Flash Video):由Adobe Flash延伸而來的一種視頻技術,主要用於網站。
  • Real Video:只能容納Real Video和Real Audio編碼格式的媒體,其文件擴展名是.rmvb。

封裝格式不影響視頻的畫質,它只負責把視頻軌和音頻軌集成在一起,只起到一個文件夾(或者壓縮包)的作用,並沒有對視頻軌或音頻軌造成影響。

視頻編碼格式

視頻編碼主要是為了將視頻像素數據壓縮成視頻碼流,以降低視頻的大小,從而方便網路傳輸和存儲。常見的有:

  • H.264
  • MPEG-4
  • MPEG-2
  • VP8
  • VP9
  • VC-1

音頻編碼格式

和視頻一樣,音頻編碼也是為了將音頻原始數據轉換為音頻碼流,以便在網路傳輸。常見的有:

  • AAC
  • AC-3
  • MP3
  • WMA

流媒體協議

  • RTP
  • RTCP
  • RTSP
  • RTMP
  • HLS

以上。具體協議內容請期待後續文章~

打個廣告,文章都是首發在公眾號的,歡迎關注 ↓

推薦閱讀:

H.264和VP8視頻編碼技術對比

TAG:音視頻 | 視頻編碼格式 | 音頻編碼格式 |