視頻編解碼器
出自 MBA智库百科(https://wiki.mbalib.com/)
視頻編解碼器(Video Codec)
目錄 |
視頻編解碼器是指一個能夠對數字視頻進行壓縮或者解壓縮的程式或者設備。通常這種壓縮屬於有損數據壓縮。
視頻編解碼器的基本原理[1]
音頻和視頻都需要可定製的壓縮方法。人們嘗試了很多種不同的辦法來試圖解決這個問題。一個複雜的平衡關係存在於以下因素之間:視頻的質量、用來表示視頻所需要的數據量(通常稱之為碼率)、編碼演算法和解碼演算法的複雜度、針對數據丟失和錯誤的魯棒性(Robust-ness)、編輯的方便性、隨機訪問、編碼演算法設計的完美性、端到端的延時以及其它一些因素。
一個典型的數字視頻編解碼器的第一步是將攝像機輸入的視頻從RGB色度空間轉換到YCbCr色度空間,而且通常還伴有色度抽樣來生成4:2:0格式的視頻(有時候在隔行掃描的情況下會採用4:2:2的抽樣方式)。
轉換到YCbCr色度空間會帶來兩點好處:
(1)部分地解除了色度信號中的相關性,提高了可壓縮能力。
(2)將亮度信號分離出來,而亮度信號對視覺感覺是最重要的,相對來說色度信號對視覺感覺就不是那麼重要,可以抽樣到較低的解析度(4:2:0或者4:2:2)而不影響人觀看的感覺。
在真正的編碼之前,對空域或者時域抽樣可以有效地降低原始視頻數據的數據量。
輸入的視頻圖像通常被分割為巨集塊分別進行編碼,巨集塊的大小通常是16x16的亮度塊信息和對應的色度塊信息。然後使用分塊的運動補償從已編碼的幀對當前幀的數據進行預測。之後,使用塊變換或者子帶分解來減少空域的統計相關性。最常見的變換是8×8的DCT(DiscreteCosineTransform,離散餘弦變換)。變換的輸出繫數接下來被量化,量化後的繫數進行熵編碼併成為輸出碼流的一部分。實際上在使用DCT變換的時候,量化後的二維的繫數通常使用Zig-zag掃描將繫數表示為一維的,再通過對連續0繫數的個數和非0繫數的大小(Level)進行編碼得到一個符號,通常也有特殊的符號來表示後面剩餘的所有繫數全部等於0。這時候的熵編碼通常使用變長編碼。
解碼基本上執行和編碼的過程完全相反的過程。其中不能被完全恢複原來信息的步驟是量化。這時候,要儘可能接近地恢複原來的信息。這個過程被稱為反量化,儘管量化本身已經註定是個不可逆過程。
視頻編解碼器的設計通常是標準化的,也就是說,有發佈的文檔來準確地規範如何進行。實際上,為了使編碼的碼流具有互操作性(即由A編碼器編成的碼流可以由B鋸碼器解碼,反之亦然),僅僅對解碼器的解碼過程進行規範就足夠了。通常編碼的過程並不完全被一個標準所定義,用戶有設計自己編碼器的自由,只要用戶設計的編碼器編碼產生的碼流是符合解碼規範的就可以了。因此,由不同的編碼器對同樣的視頻源按照同樣的標準進行編碼,再解碼後輸出圖像的質量往往可能相差很多。
很多視頻編解碼器可以很容易地在個人電腦和消費電子產品上實現,這使得在這些設備上有可能同時實現多種視頻編解碼器,避免了由於兼容性的原因使得某種占優勢的編解碼器影響其他編解碼器的發展和推廣。最後我們可以說,並沒有哪種編解碼器可以替代其它所有的編解碼器。常用的視頻編解碼器如H.26x、MPEG、RealVideo、WMV等。
視頻編解碼器的主要功能[2]
視頻編解碼器的主要功能是將本地視頻輸入設備輸入的模擬視頻信號,採用某種視頻壓縮編碼標準進行壓縮編碼處理,產生適合於傳輸通道傳輸的碼流,同時將遠端會場或MCU的已經壓縮編碼的視頻信號進行解壓縮後,以某種視頻圖像格式輸出。
視頻編解碼器可以支持H.261、H.262、H.263、H.263+、H.263++等圖像壓縮標準中的一種或幾種,所採用的圖像中間格式有CIF(CommonIntermediateFormat)、QCIF、4CIF、16CIF等。根據視頻會議系統的類型,可以選擇其中的一種或幾種,沒有必要支持所有格式。