天天看點

視訊壓縮編碼技術和音頻編碼壓縮技術——音視訊篇

作者:願天堂沒有代碼

前述

視訊壓縮編碼技術和音頻編碼壓縮技術——音視訊篇

音視訊技術主要包含以下幾點:封裝技術,視訊壓縮編碼技術和音頻編碼壓縮技術。

如果解碼本地視訊,則不需要解協定:解封裝->解碼音視訊->音視訊同步

解協定的作用

将流媒體協定的資料解析為标準的響應的封裝格式的資料,音視訊在網絡上傳輸時常常采用各種流媒體協定

  • 例如HTTP、RPMP和MMS等等,這些協定在傳輸音視訊時也會傳輸一些信令資料,這些信令資料包含播放、暫停和停止等,或者對網絡狀态的描述

解協定的過程就是去掉這些信令指令,隻保留音視訊資料

  • 例如:采用RTMP協定發送的資料,經過解協定後,得到輸出結果為flv的封裝格式資料。

解封裝的作用

将輸入的封裝格式的資料,分離成音頻流壓縮的資料和視訊流壓縮的資料,封裝格式種類很多

  • 例如MP4,MKV,RMVB,TS,FLV,AVI等等。它的作用就是将已經壓縮編碼的視訊資料和音頻資料按照一定的格式放到一起。
  • 例如:FLV封裝格式的資料解封裝後,輸出H264的視訊碼流和AAC的音頻碼流。

解碼的作用

  • 将音頻/視訊的壓縮編碼資料,解碼成為非壓縮的音視/視訊的原始資料。音頻的壓縮編碼标準包含AAC,MP3,AC-3等,視訊的壓縮編碼标準包含H264,MPEG2,VC-1等等
  • 解碼的過程是整個系統中總重要和最複雜的一個環節,通過解碼,壓縮的視訊資料輸出為非壓縮的顔色資料,例如YUV420P、RGB等等,壓縮的音頻資料輸出為非壓縮的音頻抽樣資料,例如PCM的資料。

音視訊同步的作用

将解封裝過程得到的參數資訊和同步解碼得到的音視訊資料,推送到系統的顯示卡和聲霸卡顯示出來

現今主流視訊編碼算法

編碼算法具有高計算量和受實作平台的影響等特點,是以技術一直在不斷地完善,主流是 MPEG-4 和 H.264。而且市場需求量也是很大的,但出現一個問題:就是每個領域都有幾家特别牛逼的幾家公司在哪裡,人家大而不倒,你想跻身進入 500 強,沒有強悍的身闆(高品質的技術),你怕站不住啊!

MPEG-4 和 H.264 差別

  • MPEG-4 是 ISO 組織制定的音視訊編解碼算法,主要針對網絡、視訊會議和可視電話等低碼率傳輸應用
  • H.264 是 ITU-T 和 ISO 聯合組織 JVT 制定的視訊編解碼标準,在 MPEG-4 中是 Part-10,稱為 AVC(Advanceel Video Ccoding),在 ITU 中稱為 H.264

H.264 特點

視訊壓縮編碼技術和音頻編碼壓縮技術——音視訊篇

H.264 算法還是基于塊的混合編碼技術,編碼過程基本與以前的編碼标準相同,隻是每個功能子產品都進行了技術更新,幀内預測、幀間預測、整數 DCT 變換、環路濾波、熵編碼等子產品都做了技術提升。

(1)NAL與VCL

網絡适配層 NAL(Network Abstraction Layer)是 H.264 為适應網絡傳輸應用而制定的一層資料打包操作。傳統的視訊編碼算法編完的視訊碼流在任何應用領域下(無論用于存儲、傳輸等)都是統一的碼流模式,視訊碼流僅有視訊編碼層 VCL(Video Coding Layer)。而 H.264 可根據不同應用增加不同的 NAL 片頭,以适應不同的網絡應用環境,減少碼流的傳輸差錯。

(2)幀内預測

H.264 為能進一步利用圖像的空間相關性,H.264 引入了多模式的幀内預測以提高壓縮效率。簡單地說,幀内預測編碼就是用周圍鄰近的像素值來預測目前的像素值,然後對預測誤差進行編碼。預測是基于塊的,亮度分量(Luma)塊的大小可以在16×16和4×4之間選擇,16×16塊有4種預測模式,4×4塊有9種預測模式;色度分量 (Chroma)預測是對整個8×8塊進行的,預測模式同亮度16×16的4種預測模式。

(3)幀間預測

幀間預測即傳統的運動估計 ME 加運動補償 MC,H.264 的運動估計更精準、快速,效果更好

解碼原理

首先解析碼流的頭資料,擷取編碼圖像的有關參數:包括幀編碼類型(I/P)、圖像寬度或高度等,後續就是以宏塊為機關循環解碼,以宏塊為處理單元循環執行。熵解碼是可變長編碼 VLC 的逆操作,即 VLD。H.263/MPEG-1/2/4 是 Huffman 熵解碼,即通常意義上的 VLD,而 H.264 則是采用了算術解碼,又包括 CAVLD、CABAD

另外

  • 對于幀間編碼的宏塊,解碼器還要解析出目前宏塊的運動向量。熵解碼後是反量化操作,反量化就是量化結果乘以量化步長,對于不同的解碼算法又有不同的反量化處理,H.263采用了32級的均勻量化,即宏塊資料采取一個量化步長
  • MPEG-4除了支援H.263的均勻量化外,還增加了量化表的處理方式;H.264采用了52級的均勻量化方式
  • 反量化處理後,進行反變換IDCT,對H.263/MPEG-1/2/4采取了8×8塊的浮點式IDCT,H.264采取了4×4的整數ICT。
  • 運動補償是解碼器中的重點,占用了約60%以上的計算負荷,這是因為碼流統計中幀間編碼為主要的編碼類型,而與之對應的處理就是插值運動補償,根據從碼流中解析的運動向量資訊,定位參考幀的确切位置,然後計算1/2、1/4像素精度的插值,最後把結果補償(加)到重建幀中

解碼器中的最後處理是可選的去除塊效應(MPEG-4)、環路濾波(H.264)、圖像擴充等。

上面的技術點如果要學習的話的太多了,不友善展示。如果想轉入音視訊開發各位可以參考電子手冊《音視訊開發入門到精通》,私信發送 "音視訊進階" 即可 免費擷取,電子手冊裡面記載了音視訊開發從入門語言到最後的實戰講解。而且因為音視訊開發門檻很高,技術知識範圍廣,是以必然需要系統性的學習才能快速掌握
視訊壓縮編碼技術和音頻編碼壓縮技術——音視訊篇
視訊壓縮編碼技術和音頻編碼壓縮技術——音視訊篇

資料整理不易,覺得有幫助的朋友可以幫忙點贊分享支援一下~

你的支援,就是我的動力;祝各位前程似錦

繼續閱讀