視訊編解碼器(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是由ITU-T開發的,第一個使用的數位影片壓縮標準。實質上說,之後的所有的標準視訊編解碼器都是基於它設計的。它使用了常見的YCbCr顏色空間,4:2:0的色度抽樣格式,8位元的抽樣精度,16x16的大區塊,分塊的運動補償,按8x8分塊進行的離散餘弦轉換,量化,對量化係數的Zig-zag掃描,run-level符號影射以及霍夫曼編碼。H.261只支持逐行掃描的視訊輸入。
H.263主要用在視訊會議、視訊電話和網路視訊上。在對逐行掃描的視訊源進行壓縮的方面,H.263比它之前的視訊編碼標準在效能上有了較大的提升。尤其是在低位元速率端,它可以在保證一定品質的前提下大大的節約位元速率。
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第二部分等同於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-2和第一版的H.263,它的壓縮效能有所提高。和之前的視訊編碼標準的主要不同點在於,「物件導向」(Object-oriented)的編碼方法和一些其它並非用於提高通常視訊編碼壓縮率的技術。當然它也引入了一些提高壓縮能力的技術,包括一些H.263的技術和1/4像素的運動補償。和MPEG-2一樣,它同時支援逐行掃描和隔行掃描。
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第二部分又稱為高效率影片編碼(High Efficiency Video Coding, HEVC),是ITU-T VCEG和ISO/IEC MPEG再度合作,在2013年制定完成的視訊編碼標準,被視為是取代H.264的新一代視訊編碼標準。
AVS是中國制定的音視訊壓縮編碼標準,故準確來說,其不僅僅包括視訊編碼標準。它最主要的目的是通過採用與H.264不同的專利授權方式,來避免付出大筆的專利授權費用。在技術上可以迴避一些非必要專利,也可以在幾乎不影響編碼壓縮效率的基礎上,提高編解碼速度。
DivX,XviD和3ivx視訊編解碼器基本上使用的都是MPEG-4第二部分的技術,以字尾*.avi, *.mp4, *.ogm或者*.mkv結尾的檔案有一部分是使用這些視訊編解碼器的。
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有諸多相似之處。
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中一些編碼衝突的問題。