视频编解码器

**視訊編解碼器**（Video Codec）是指一個能夠對數位影片進行壓縮或者解壓縮的程式或者裝置。通常這種壓縮屬於破壞性資料壓縮。歷史上，視訊訊號是以類比形式儲存在磁帶上的。隨著 Compact Disc 的出現並進入市場，音訊訊號以數位化方式進行儲存，視訊訊號也開始使用數位化格式，一些相關技術也開始隨之發展起來。

音訊和視訊都需要可客製化的壓縮方法。工程師和數學家們嘗試了很多種不同的辦法來試圖解決這個問題。

一個複雜的平衡關係存在於以下因素之間：視訊的品質、用來表示視訊所需要的資料量（通常稱之為位元速率）、編碼演算法和解碼演算法的複雜度、針對資料遺失和錯誤的魯棒性（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 （頁面存檔備份，存於網際網路檔案館）數位影片壓縮演化