影片編解碼器

影片編解碼器（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）。

### 其他影片編碼器

RealVideo是由RealNetworks公司開發的影片編解碼器。

Sorenson 3是由蘋果公司的軟體QuickTime使用的一種編解碼器。很多網際網路上的QuickTime格式的影片都是這種編解碼器壓縮的。

Cinepak同樣是由蘋果公司的軟體QuickTime使用的一種很老的編解碼器，好處是即使很老的電腦（如486）也都支援並且能順利播放。

Indeo Video是由Intel所研發的編解碼器。

上面提到的編解碼器都有各自的優點和缺點，經常可以看到有對這些編解碼器進行比較的文章，這時候最重要的同時考慮編碼的碼率和清晰度（常說的律失真特性，健壯性）。

## 編解碼器和影片文件的問題

一個常見問題，如果一個使用者想要觀看特定的編解碼器編碼的影片流，如果該特定的編碼方式不存在或者沒有正確的被安裝在使用者的電腦上，影片將會無法被播放（或不會達到最好效果）。

MPlayer和VLC media player媒體播放器在一個獨立的可攜式的庫中包含了許多流行的編解碼器，可用於多種作業系統，包括Windows，Linux和Mac OSX。這同樣也解決了Windows中一些編碼衝突的問題。

## 擴展閱讀

- Wyner-Ziv Coding of Video描述了另一個影片壓縮演算法實現接近Slepian-Wolf綁定（有連結到原始碼）。
- Video codecs standards PDF文件和一些編解碼標準的描述
- History of main codecs 數字視頻壓縮演化