視訊編解碼器
視訊編解碼器(Video Codec)是指一個能夠對數碼影片進行壓縮或者解壓縮的程式或者裝置。通常這種壓縮屬於有損資料壓縮。歷史上,視像訊號是以模擬形式儲存在磁帶上的。隨着CD的出現並進入市場,音訊訊號以數碼化方式進行儲存,視像訊號也開始使用數碼化格式,一些相關技術也開始隨之發展起來。
音訊和視像都需要可客製化的壓縮方法。工程師和數學家們嘗試了很多種不同的辦法來試圖解決這個問題。
一個複雜的平衡關係存在於以下因素之間:視像的質素、用來表示視像所需要的數據量(通常稱之為位元速率)、編碼演算法和解碼演算法的複雜度、針對數據遺失和錯誤的魯棒性(Robustness)、編輯的方便性、隨機訪問、編碼演算法設計的完美性、端到端的延時以及其它一些因素。
應用
在日常生活中,視訊編解碼器的應用非常廣泛。例如在DVD(MPEG-2)中,在VCD(MPEG-1)中,在各種衛星和陸上電視廣播系統中,在互聯網上。線上的視像素材通常是使用很多種不同的編解碼器進行壓縮的,為了能夠正確地瀏覽這些素材,用戶需要下載並安裝編解碼器包--一種為PC準備的編譯好的編解碼器組件。
由用戶自己來進行視像的壓縮已經隨着DVD燒錄機的出現而越來越風行。由於商店中販賣的DVD通常容量比較大(雙層)而目前雙層DVD燒錄機還不太普及,所以用戶有時候會對DVD的素材進行二次壓縮使其能夠在一張單面DVD上完整地儲存。
視訊編解碼器設計
一個典型的數碼影片編解碼器的第一步是將從攝像放像機輸入的視像從RGB色度空間轉換到YCbCr色度空間,而且通常還伴有色度抽樣來生成4:2:0格式的視像(有時候在隔行掃描的情況下會採用4:2:2的抽樣方式)。轉換到YCbCr色度空間會帶來兩點好處:
1)這樣做部分的解除了色度訊號中的相關性,提高了可壓縮能力。
2)這樣做將亮度訊號分離出來,而亮度訊號對視覺感覺是最重要的,相對來說色度訊號對視覺感覺就不是那麼重要,可以抽樣到較低的解像度(4:2:0或者4:2:2)而不影響人觀看的感覺。
在真正的編碼之前,對空域或者時域抽樣可以有效地降低原始視像數據的數據量。
輸入的視像圖像通常被分割為大區塊分別進行編碼,大區塊的大小通常是16x16的亮度塊資訊和對應的色度塊資訊。然後使用分塊的運動補償從已編碼的影格對當前影格的數據進行預測。之後,使用塊轉換或者子帶分解來減少空域的統計相關性。最常見的轉換是8x8的離散餘弦轉換(DCT fordiscrete cosine transform)。轉換的輸出係數接下來被量化,量化後的係數進行熵編碼並成為輸出碼流的一部分。實際上在使用DCT轉換的時候,量化後的二維的係數通常使用Zig-zag掃描將係數表示為一維的,再通過對連續0係數的個數和非0係數的大小(Level)進行編碼得到一個符號,通常也有特殊的符號來表示後面剩餘的所有係數全部等於0。這時候的熵編碼通常使用變長編碼。
解碼基本上執行和編碼的過程完全相反的過程。其中不能被完全恢復原來資訊的步驟是量化。這時候,要儘可能接近的恢復原來的資訊。這個過程被稱為反量化,儘管量化本身已經註定是個不可逆過程。
視訊編解碼器的設計通常是標準化的,也就是說,有發佈的文件來準確的規範如何進行。實際上,為了使編碼的碼流具有互操作性(即由A編碼器編成的碼流可以由B解碼器解碼,反之亦然),僅僅對解碼器的解碼過程進行規範就足夠了。通常編碼的過程並不完全被一個標準所定義,用戶有設計自己編碼器的自由,只要用戶設計的編碼器編碼產生的碼流是符合解碼規範的就可以了。因此,由不同的編碼器對同樣的視像源按照同樣的標準進行編碼,再解碼後輸出圖像的質素往往可能相差很多。
常用的視訊編解碼器
很多視訊編解碼器可以很容易的在個人電腦和消費電子產品上實現,這使得在這些裝置上有可能同時實現多種視訊編解碼器,這避免了由於相容性的原因使得某種佔優勢的編解碼器影響其它編解碼器的發展和推廣。最後我們可以說,並沒有那種編解碼器可以替代其它所有的編解碼器。下面是一些常用的視訊編解碼器,按照它們成為國際標準的時間排序:
H.261
H.261主要在老的視像會議和視像電話產品中使用。H.261是由ITU-T開發的,第一個使用的數碼影片壓縮標準。實質上說,之後的所有的標準視訊編解碼器都是基於它設計的。它使用了常見的YCbCr顏色空間,4:2:0的色度抽樣格式,8位元的抽樣精度,16x16的大區塊,分塊的運動補償,按8x8分塊進行的離散餘弦轉換,量化,對量化係數的Zig-zag掃描,run-level符號影射以及霍夫曼編碼。H.261只支持逐行掃描的視頻輸入。
H.263
H.263主要用在視像會議、視像電話和網絡視像上。在對逐行掃描的視像源進行壓縮的方面,H.263比它之前的視像編碼標準在效能上有了較大的提升。尤其是在低位元速率端,它可以在保證一定質素的前提下大大的節約位元速率。
MPEG-1第二部分
MPEG-1第二部分主要使用在VCD上,有些線上影片也使用這種格式。該編解碼器的質素大致上和原有的VHS錄影帶相當,但是值得注意的是VCD屬於數碼影片技術,它不會像VHS錄影帶一樣隨着播放的次數和時間而逐漸損失質素。如果輸入視像源的質素足夠好,編碼的位元速率足夠高,VCD可以給出從各方面看都比VHS要高的質素。但是為了達到這樣的目標,通常VCD需要比VHS標準要高的位元速率。實際上,如果考慮到讓所有的VCD播放機都可以播放,高於1150kbps的視像位元速率或者高於352x288的視像解像度都不能使用。大體來說,這個限制通常僅僅對一些單體的VCD播放機(包括一些DVD播放機)有效。MPEG-1第三部分還包括了目前常見的*.mp3音訊編解碼器。如果考慮通用性的話,MPEG-1的視像/音訊編解碼器可以說是通用性最高的編解碼器,幾乎世界上所有的電腦都可以播放MPEG-1格式的檔案。幾乎所有的DVD機也支援VCD的播放。從技術上來講,比起H.261標準,MPEG-1增加了對半像素運動補償和雙向運動預測影格。和H.261一樣,MPEG-1只支持逐行掃描的視頻輸入。
MPEG-2第二部分
MPEG-2第二部分等同於H.262,使用在DVD、SVCD和大多數數碼影片廣播系統和有線分佈系統(cable distribution systems)中。當使用在標準DVD上時,它支援很高的圖像質素和闊螢幕;當使用在SVCD時,它的質素不如DVD但是比VCD高出許多。但是不幸的是,SVCD最多能在一張CD光碟上容納40分鐘的內容,而VCD可以容納一個小時,也就是說SVCD具有比VCD更高的平均位元速率。MPEG-2也將被使用在新一代DVD標準HD-DVD和Blu-ray(藍光光碟)上。從技術上來講,比起MPEG-1,MPEG-2最大的改進在於增加了對隔行掃描視像的支援。MPEG-2可以說是一個相當老的視像編碼標準,但是它已經具有很大的普及度和市場接受度。
MPEG-4第二部分
MPEG-4第二部分標準可以使用在網絡傳輸、廣播和媒體儲存上。比起MPEG-2和第一版的H.263,它的壓縮效能有所提高。和之前的視像編碼標準的主要不同點在於,「物件導向」(Object-oriented)的編碼方法和一些其它並非用於提高通常視像編碼壓縮率的技術。當然它也引入了一些提高壓縮能力的技術,包括一些H.263的技術和1/4像素的運動補償。和MPEG-2一樣,它同時支援逐行掃描和隔行掃描。
MPEG-4第十部分
MPEG-4第十部分技術上和ITU-T H.264是相同的標準,有時候也被叫做「AVC」)。是ITU-T VCEG和ISO/IEC MPEG合作,在2003年制定完成的視像編碼標準,並且在已經得到了越來越多的應用。該標準引入了一系列新的能夠大大提高壓縮效能的技術,並能夠同時在高位元速率端和低位元速率端大大超越以前的諸標準。已經使用和將要使用H.264技術的產品包括例如索尼公司的PSP,Nero公司的Nero Digital產品套裝,蘋果公司的Mac OS X v10.4,以及新一代DVD標準HD-DVD和藍光光碟(Blu-ray)。
MPEG-H第二部分
MPEG-H第二部分又稱為高效率影片編碼(High Efficiency Video Coding, HEVC),是ITU-T VCEG和ISO/IEC MPEG再度合作,在2013年制定完成的視像編碼標準,被視為是取代H.264的新一代視像編碼標準。
AVS
AVS是中國制定的音視像壓縮編碼標準,故準確來說,其不僅僅包括視像編碼標準。它最主要的目的是通過採用與H.264不同的專利授權方式,來避免付出大筆的專利授權費用。在技術上可以迴避一些非必要專利,也可以在幾乎不影響編碼壓縮效率的基礎上,提高編解碼速度。
DivX,XviD和3ivx
DivX,XviD和3ivx視訊編解碼器基本上使用的都是MPEG-4第二部分的技術,以字尾*.avi, *.mp4, *.ogm或者*.mkv結尾的檔案有一部分是使用這些視訊編解碼器的。
WMV
WMV(Windows Media Video)是微軟公司的視訊編解碼器家族,包括WMV 7、WMV 8、WMV 9、WPV 10。這一族的編解碼器可以應用在從撥號上網的窄頻視像到高清晰度電視(HDTV)的寬頻視像。使用Windows Media Video用戶還可以將影片檔燒錄到CD、DVD或者其它一些裝置上。它也適用於用作媒體伺服器。WMV可以被看作是MPEG-4的一個增強版本。最新的WMV的版本是正在SMPTE制定中的VC-1標準。WMV-9(VC-1,開發代號為「Corona」)剛推出的時候稱為VC-9,之後才被電影電視工程師協會(SMPTE)改稱為VC-1(VC指Video Codec)。技術上,VC-1也與H.264有諸多相似之處。
AV1
AOMedia Video 1(簡稱AV1)是一個開放、免專利的影片編碼格式,專為通過網路進行串流傳輸而設計。它由開放媒體聯盟(AOMedia)開發,該聯盟由半導體企業、隨選視像供應商和網頁瀏覽器開發商於2015年成立。互聯網工程任務組(IETF)也將這項工作標準化為線上影片編解碼器(NetVC)[1]。
其他視像編碼器
RealVideo是由RealNetworks公司開發的視訊編解碼器。
Sorenson 3是由蘋果公司的軟件QuickTime使用的一種編解碼器。很多互聯網上的QuickTime格式的視像都是這種編解碼器壓縮的。
Cinepak同樣是由蘋果公司的軟件QuickTime使用的一種很老的編解碼器,好處是即使很老的電腦(如486)也都支援並且能順利播放。
Indeo Video是由Intel所研發的編解碼器。
上面提到的編解碼器都有各自的優點和缺點,經常可以看到有對這些編解碼器進行比較的文章,這時候最重要的同時考慮編碼的位元速率和清晰度(常說的律失真特性,健壯性)。
編解碼器和影片檔的問題
一個常見問題,如果一個用戶想要觀看特定的編解碼器編碼的視像流,如果該特定的編碼方式不存在或者沒有正確的被安裝在用戶的電腦上,視像將會無法被播放(或不會達到最好效果)。 MPlayer和VLC media player媒體播放器在一個獨立的可攜式的庫中包含了許多流行的編解碼器,可用於多種作業系統,包括Windows,Linux和Mac OSX。這同樣也解決了Windows中一些編碼衝突的問題。
參考資料
- ^ AV1 ist eingefroren und 30 Prozent besser als VP9. [2018-03-23]. (原始內容存檔於2018-03-28).
參見
擴充閱讀
- Wyner-Ziv Coding of Video描述了另一個視像壓縮演算法實現接近Slepian-Wolf繫結(有連結到原始碼)。
- Video codecs standards PDF檔案和一些編解碼標準的描述
- History of main codecs (頁面存檔備份,存於互聯網檔案館)數碼影片壓縮演化