H264

**H.264**，又稱為 **MPEG-4 第 10 部分，進階視訊編碼**（英語：MPEG-4 Part 10, Advanced Video Coding，縮寫為 MPEG-4 AVC）是一種面向塊，基於運動補償的視訊編碼標準 。到 2014 年，它已經成為高精度視訊錄製、壓縮和發布的最常用格式之一。第一版標準的最終草案於 2003 年 5 月完成。

H.264/AVC 專案的目的是為了建立一個更佳的視訊壓縮標準，在更低的位元速率的情況下依然能夠提供良好視訊品質的標準（如，一半或者更少於 MPEG-2,H.263, 或者 MPEG-4 Part2 ）。同時，還要不會太大的增加設計的複雜性。H.264 的另外一個目標是提供足夠的靈活性，以允許該標準能夠應用於各種各樣的網路和系統的各應用上，包括低和高位元速率，低和高解析度視訊，廣播，DVD 儲存，RTP / IP 分組網路和 ITU-T 多媒體電話系統。H.264 標準可以被視為由多個不同的應用框架 / 設定檔（profiles）組成的「標準系列」。

H.264/MPEG-4 AVC 是一種面向塊的基於運動補償的編解碼器標準。由 ITU-T 視訊編碼專家組與 ISO/IEC 聯合工作群組 —— 即動態圖像專家組（MPEG）—— 聯合組成的聯合視訊組（JVT，Joint Video Team）開發。因 ITU-T **H.264** 標準和 ISO/IEC MPEG-4 **AVC** 標準（正式名稱是 ISO/IEC 14496-10—MPEG-4 第十部分，進階視訊編碼）有相同的技術內容，故被共同管理。

H.264 因其是藍光碟片的其中一種編解碼標準而著名，所有藍光碟片播放器都必須能解碼 H.264。它也被廣泛用於網路串流媒體資料如 Vimeo、YouTube、以及 iTunes Store，網路軟體如 Adobe Flash Player 和 Microsoft Silverlight，以及各種高解析度電視無線電視（DVB-T、DVB-T2）、有線電視（DVB-C）以及衛星（DVB-S 和 DVB-S2）。

## 概述

H.264/AVC 專案是想建立一種視訊標準。與舊標準相比，它能夠在更低頻寬下提供優質視訊（換言之，只有 MPEG-2，H.263 或 MPEG-4 第 2 部分的一半頻寬或更少），也不增加太多設計複雜度使得無法實現或實現成本過高。另一目的是提供足夠的靈活性以在各種應用、網路及系統中使用，包括高、低頻寬，高、低視訊解析度，廣播，DVD 儲存，RTP/IP 網路，以及 ITU-T 多媒體電話系統。

H.264 標準可以被看作一個「標準家族」，成員有下面描述的各種組態（profile）。一個特定的解碼器至少支援一種，但不必支援所有的。解碼器標準描述了它可以解碼哪些組態。

H.264 的命名遵循了 ITU-T 的命名約定，它是 VCEG 視訊編碼標準 H.26x 線中的一員；MPEG-4 AVC 的命名來自 ISO/IEC MPEG 的命名約定，它是 ISO/IEC 14496 的第 10 部分，該協定族被稱為 MPEG-4。該標準是作為 VCEG 和 MPEG 的一部分開發的，此前在 ITU-T 作為 VCEG 的專案，叫做 H.26L。所以常用於指代此標準的名稱有 H.264/AVC，AVC/H.264，H.264/MPEG-4 AVC，或 MPEG-4/H.264 AVC，以強調共同遺產。有時，也用「JVT 編解碼」指代它，以指明是 JVT（聯合開發組）組織開發的。（這種夥伴關係和多命名並不少見。例如，視訊編碼標準 MPEG-2 也出現在 MPEG 和 ITU-T 的夥伴關係中，MPEG-2 視訊在 ITU-T 社群中稱作 H.262。）一些軟體（如 VLC media player）內部標識此標準為 AVC1。

H.264/AVC 標準化的第一個版本於 2003 年 5 月完成。在第一個擴充原始標準的專案中，JVT 開發了高精度拓展（Fidelity Range Extensions，FRExt）。該拓展通過支援更高的像素精度（包括 10 位元和 12 位元像素精度）和支援更高的色度抽樣率（包括 YUV 4:2:2 和 YUV 4:4:4）來支援更高精度的影片編碼。該拓展加入了一些新的特性（比如自適應的 4x4 和 8x8 的整數變換，使用者自訂量化加權矩陣，高效的影格間無失真編碼，支援新增的色度空間和色度參差變換）。該拓展的設計於 2004 年 7 月完成，草案也於 2004 年 9 月完成。

對標準進一步的最新擴充包括：增加五個新的組態，主要用於專業應用；增加擴充全範圍（extended-gamut）色彩空間的支援；定義附加長寬比標識；定義「補充增強資訊」的兩個附加類型（濾波後提示和色調對映）；以及廢棄一個根據產業回饋應該另行設計的早期 FRExt 組態。

接著加入標準的主要特性是可適應視訊編碼（Scalable Video Coding，SVC）。據 H.264/AVC 附件 G，SVC 允許碼流結構中包含遵循標準的子碼流，這種稱作「基礎層」的碼流要能夠為不支援 SVC 的 H.264/AVC 編解碼器所解碼。為達成在時間上的可適應性，在推導子碼流時，從碼流中移除了完整存取單元（complete access unit）。這種情況下，要按相應方式來構造碼流中的高層語法和影格間預測參考影格。另一方面，為達成空間和品質的可適應性（換言之，低解析度 / 低品質作為子碼流而不是主碼流），推導子碼流時移除了 NAL（網路抽象層）。這種情況下，層間預測（暨，從低解析度 / 低品質訊號資料中預測高解析度 / 高品質訊號）常被用於提高編碼效率。可適應視訊編碼擴充於 2007 年 11 月完成。

下一個加入標準的主要特性是多視圖編碼（Multiview Video Coding，MVC）。據 H.264/AVC 附件 H，MVC 使得碼流結構可以表達一個視訊場景的不止一個視圖。該功能的一個重要例子是 3D 立體視訊編碼。MVC 的工作中開發了兩個組態：多視圖高組態（Multiview High Profile）支援任意數量的視圖，立體高組態（Stereo High Profile）是為雙視圖立體視訊特別設計的。多視圖編碼擴充於 2009 年 11 月完成。

## 技術細節

H.264/AVC 包含了一系列新的特徵，使得它比起以前的編解碼器不但能夠更有效的進行編碼，還能在各種網路環境下的應用中使用。這些新特性包括：

* 多參考影格的運動補償。比起以前的影片編碼標準，H.264/AVC 以更靈活的方式使用已編碼的更多影格來作為參考影格。在某些情況下，可以使用最多 32 個參考影格（在以前的標準裡面，參考影格的數目不是 1 就是對 B 影格來說的 2）。該特性對大多數場景序列都可以帶來一定的位元速率降低或者品質提高，對某些類型的場景序列，例如快速重複的閃光，反覆的剪下或者背景遮擋的情況，它能很顯著的降低編碼的位元速率。
* 變塊尺寸運動補償。可使用最大 16x16 至最小 4x4 的塊來進行運動估計與運動補償，能夠對圖像序列中的運動區域進行更精確的分割。**這些類型共有 16×16、16×8、8×16、8×8、8×4、4×8、4×4**。
* 為了減少混疊（Aliasing）並得到更銳化的圖像，採用六抽頭的濾波器（六階數字濾波器）來產生二分之一像素的亮度份量預測值。
* 靈活的隔行掃描視訊編碼（interlaced-scan video coding）。隔行掃描圖像的每影格包括兩個場，所以對於隔行掃描圖像有三種編碼方式：1、將兩場合併為一影格進行編碼；2、將兩場分別編碼；3、將兩場合併為一影格，但是在大區塊級別上，將一個影格大區塊劃分為兩個場大區塊進行編碼。以上前兩種編碼方式稱為圖像自適應影格 / 場編碼（Picture-adaptive frame-field, PicAFF or PAFF），第三種稱為大區塊自適應影格 / 場編碼（Macroblock-adaptive frame-field, MBAFF）。
  * PAFF：對於一個運動圖像，由於場之間存在著較大的掃描間隔，所以影格中相鄰兩行之間的空間相關性相對於逐行掃描圖像較小，因此對兩個場分別編碼會更節省碼流。對於一個非運動圖像，相鄰兩行之間存在較大的空間相關性，將兩場合併為一影格編碼更有效。所以 PAFF 編碼方式可以針對整個圖像的編碼方式做自適應調整，選擇影格編碼或場編碼。
  * MBAFF：當圖像同時存在運動區域和非運動區域時，PAFF 的劣勢便顯現出來，PAFF 的自適應粒度太粗，無法實現滿足更加精細的編碼要求，於是 MBAFF 應運而生。MBAFF 對影格編碼或場編碼的選擇是基於大區塊的，MBAFF 將兩場合併為一影格進行編碼，但將每一個影格大區塊（16x16）劃分為場大區塊對（8x16），針對每一個影格大區塊，比較影格編碼和場編碼產生的碼流大小，使用最節省碼流的方式。
* 1/4 像素精度的運動補償能夠提供更高精度的運動塊預測，由於色度通常是亮度抽樣的 1/2（參見 4:2:0），這時運動補償的精度就達到了 1/8 像素精度。
* 加權的運動預測，指在運動補償時可以使用增加權重和偏移的辦法。它能在一些特殊的場合，如淡入、淡出、淡出而後淡入等情況提供相當大的編碼增益。
* 使用了一個 Loop 的除塊效應濾波器，能夠減輕普遍存在於其他基於離散餘弦變換（DCT）的影片編解碼器的塊效應。
* 一個匹配的整數 4x4 變換（類似於離散餘弦變換的設計），同樣在高精度拓展中，採用整數 8x8 變換，並能在 4x4 變換和 8x8 變換中進行自適應的選擇。
* 在第一次 4x4 變換後，對 DC 係數（色度的 DC 係數和某種特殊狀況的亮度 DC 係數）再進行一次 Hadamard 變換，使得在平滑區域得到更好的壓縮效果。
* 利用臨近塊的邊界像素的 Intra 空間預測（比曾在 MPEG-2 影片部分使用的直流係數預測和在 H.263 + 和 MPEG-4 影片部分使用的變換係數預測的效果要好）。
* 基於上下文的二元算數編碼（CABAC），它能夠靈活的將各種語法元素，在已知相應上下文概率分佈的狀況下進行更有效的無損熵編碼。「通過序列 foreman 和 coastguard 對 CABAC 和 CAVLC 的壓縮效能進行了比較，在給定的實驗條件下得出 CABAC 的位元速率比 CAVLC 節省 5%～14%，並且隨量化步長的增大，位元速率節省增多。但是 CABAC 計算複雜度高，耗時比 CAVLC 長。」
* 基於上下文的變長編碼（CAVLC），用於對量化後的變化係數進行編碼。比起 CABAC 它的複雜度相對較低，壓縮比不高，但是比起以前的影片編碼標準所使用的熵編碼方案，它又是相當有效的。CAVLC 支援所有的 H.264 profiles, CABAC 則不支援 Baseline 以及 Extended profiles.
* 對既不是用 CABAC 也不是用 CAVLC 的語法元素，使用指數哥倫布碼（Exponential-Golomb，Exp-Golomb）熵編碼方案，進行編碼。
* 使用一個網路抽像層（NAL），使得相同的影片語法可以適用於多種網路環境中；並且使用了序列參數集（SPSs）和圖像參數集（PPSs）來提供更高的強健性（robustness）和靈活性。
* 切換切片（Switching slices，包括 SP 和 SI 兩種），它使得編碼器能夠指令解碼器跳轉到一個正在處理的影片碼流，用來解決影片碼流位元速率切換和 "竅門模式"（Trick mode）操作。當解碼器利用 SP/SI 切片跳轉到一個影片碼流中間時，除非之後的解碼影格參照切換影格之前的圖像作為參考影格，它都可以得到完全一致的解碼重建圖像。
* 靈活的大區塊排列模式（FMO for Flexible macroblock ordering，也被稱為切片組 slice groups 技術）和任意切片排列（ASO for arbitrary slice ordering）模式，用來更改圖像編碼的最基本單位 - 大區塊的編碼順序。它能夠用來提高有繞信道下碼流的強韌性（robustness）以及一些其它的目的。
* 數據分割區（DP for Data partitioning），能夠將重要程度不同的語法元素分開打包傳輸，並使用非平等數據保護（UEP for unequal error protection）等技術來改善影片碼流對抗信道誤碼／丟包的強韌性（Robustness）。
* 冗餘切片（RS for Redundant Slices），同樣是一個提高碼流穩健性的技術。編碼器利用該技術可以發送圖像某區域（或者全部）的另一個編碼表示（通常是較低解析度的編碼碼流）使得當主表示發生錯誤或者丟失的時候能夠用冗餘的第二個編碼表示來解碼。
* 使用了一個自動的位元組碼流打包方法，避免了碼流中出現與開始碼重複的碼字。開始碼是碼流中用於隨機存取和重建同步的碼字。
* 補充增強資訊（SEI for Supplemental Enhancement Information）和影片可用資訊（VUI for Video Usability Information）增加了向影片碼流中加入資訊的辦法，為各種應用提供了用途。
* 輔助圖層（Auxiliary pictures），可以用來實現某些特殊的功能，例如 alpha 復合（alpha compositing）。
* 影格編號，使用該功能支援建立一個影片序列的子序列，可用來支援實現時域的可伸縮性，還支援對丟失的整影格圖像進行檢測和隱藏（丟失可能是由於網路丟包或者信道誤碼造成的）。
* 圖像順序計數，使用該功能使得各影格圖像的順序和解碼圖像的像素值與時間資訊無關，即使用一個單獨的系統對時間資訊進行傳輸、控制、更改，從而不影響解碼圖像的像素值。

上述這些技術，與其它技術的結合，使得 H.264 比起以前的影片編解碼能夠帶來效能上顯著的提高，並在各種不同的環境下達成更廣泛的應用。H.264 在壓縮效能上比起 MPEG-2 有很大的提高，在相同的圖像品質下可以，位元速率可以減少到一半或者更少。

和 MPEG 的其它影片標準一樣，H.264/AVC 也提供了一個參考軟體，並可以免費下載。它的主要目的是提供一個演示 H.264/AVC 各種功能的演示平台，而不是作為一個直接的應用平台。目前在 MPEG 也同時在進行一些硬體參考設計的實現。

## 專利許可

和 MPEG-2 第一部分、第二部分，MPEG-4 第二部分一樣，使用 H.264/AVC 的產品製造商和服務提供商需要向他們的產品所使用的專利的持有者支付專利許可費用。這些專利許可的主要來源是一家稱為 MPEG-LA LLC 的私有組織，該組織和 MPEG 標準化組織沒有任何關聯，但是該組織也管理著 MPEG-2 第一部分系統、第二部分影片、MPEG-4 第二部分影片和其它一些技術的專利許可。

其他的專利許可則需要向另一家稱為 VIA Licensing 的私有組織申請，這家公司另外也管理偏向音訊壓縮的標準如 MPEG-2 AAC 及 MPEG-4 Audio 的專利許可。

## 應用

### 光碟儲存

當時競爭的兩種下一代光碟格式技術，都已經計劃在 2005 年下半年，將 H.264/MPEG-4 AVC 作為必需的編碼格式，包括：

* DVD 論壇制訂的 HD DVD 格式
* 藍光光碟聯盟（BDA）制訂的藍光光碟 Blu-ray Disc 格式

### 數位電視

#### 歐洲與北美洲地區

歐洲的數位電視廣播（DVB）標準組織，於 2004 年下半年通過了採用 H.264/MPEG-4 AVC 於歐洲地區進行數位電視廣播，而法國總理讓 - 皮埃爾・拉法蘭於 2004 年宣佈法國將會選用 H.264/MPEG-4 AVC 作為高畫質電視接收器和數位電視無線廣播服務的付費電視頻道的一項要求。

另外，美國正在考慮使用 H.264/MPEG-4 AVC，作為數位電視無線廣播的視訊編碼規格。

#### 亞洲地區

至於亞洲地區，日本所採用的 ISDB 數位電視廣播格式，提供的 ISDB 行動電視廣播服務，使用了 H.264/MPEG-4 AVC 編碼，而其中包括了以下的電視台：

* 日本放送協會（NHK）
* TBS 電視台（TBS）
* 日本電視台（NTV）
* 朝日電視台（TV Asahi）
* 富士電視台（Fuji TV）
* 東京電視台（TV Tokyo）

在台灣以 DVB-T 數位電視廣播格式進行高解析度無線數位電視頻道，自 2020 年 10 月 12 日起，均採用 H.264/MPEG-4 AVC 作為視訊編碼格式。

香港的無綫電視、港台電視與香港電視娛樂的所有頻道都使用 H.264/MPEG-4 AVC 作為編碼格式。

澳門方面，澳廣視的所有自家及轉播頻道均採用 H.264 作為視訊編碼格式。

韓國也正在考慮改使用 H.264/MPEG-4 AVC，作為數位電視無線廣播的視訊編碼規格。

### 衛星數位電視

衛星數位電視廣播方面，以下數間服務供應商亦採用了該編碼標準，包括：

* News Corp.／DirecTV（美國）
* Echostar / Dish Network / Voom TV（美國）
* Euro1080（歐洲）
* Premiere（德國）
* BSkyB（英國及愛爾蘭）

### 網路電視

南京電信在南京推廣的 IPTV 業務由於受頻寬限制，將原有 4M 左右碼流的 MPEG-2 格式的標準畫質衛星節目用 H.264 重新編碼約為 2.23M 碼流的節目播放。

### 通訊與多媒體

第三代移動通信合作組織（3GPP）已經在第六次發佈中批准 H.264/AVC 作為其移動多媒體電話服務標準的可選技術。

美國國防部下的運動圖像標準協會（MISB for The Motion Imagery Standards Board）已經接受 H.264/AVC 為其核心應用的推薦影片編解碼器。

網際網路工程工作小組（IETF）已經完成了一個負載打包格式（RFC 3984）作為在其實時傳輸協定（RTP）上傳輸 H.264/AVC 碼流的打包辦法。

網際網路流媒體協會（ISMA for Internet Streaming Media Alliance）已經接受 H.264/AVC 作為其 ISMA 2.0 的技術規範。

MPEG 組織將 H.264/AVC 完全的整合進入了它的系統協定（例如 MPEG-2 和 MPEG-4 系統）和 ISO 媒體格式協定。

國際電信聯盟 ITU-T 標準組已經採納 H.264/AVC 作為其 H.32x 系列的多媒體電話系統的系統規範的一部分。ITU-T 的採納，使得 H264/AVC 已經被廣泛的使用在影片會議系統中，並獲得了影片電話主要的兩家產品提供商（Polycom 和 Tandberg 的支援。實際上所有新的影片會議產品都支援 H.264/AVC。

H.264 將很可能被各種影片點播服務（Video-On-Demand，VOD）使用，用來在網際網路上提供電影和電視節目直接到個人電腦的點播服務。

## 產品和實現

有幾家公司正在製作能夠對 H.264/AVC 影片進行解碼的可編程晶片。2005 年 1 月，博通（Broadcom）的 BCM7411、科勝訊公司（Conexant）的 CX2418X、Neomagic 的 MiMagic 6 和意法半導體（STMicroelectronics）的 STB7100 等幾家公司推出的產品都提供了可供測試的樣片。Sigma Designs 預計在 2005 年 3 月提供樣片。這些晶片的出現將極大的推動低成本的能夠播放標準畫質和高畫質解析度的 H.264/AVC 影片的快速推廣。除了 Neomagic 的晶片是針對低能耗應用以外，其他四種晶片都具有播放高畫質解析度影片的能力，而且大部分都將支援標準中的 High Profile。

蘋果公司已經將 H.264 整合進入 Mac OS X 版本 v10.4（暱稱 Tiger），並於 2005 年 5 月發佈了支援 H.264 的 QuickTime 版本 7.0。2005 年 4 月蘋果公司升級了軟體 DVD Studio Pro 以支援授權的高畫質格式的內容。該軟體支援將 HD-DVD 格式的內容刻錄到標準 DVD 或者 HD-DVD 媒體上。為了播放刻錄在標準 DVD 上的 HD-DVD 內容，所需要的硬體是 PowerPC G5、軟體是 Apple DVD Player v4.6，以及 Mac OS X v10.4 或者更新版本。

Envivio 公司已經可以提供針對 H.264 組播用的標準畫質實時編碼器和離線的高畫質（720p、1080i、1080p）編碼器。Envivio 公司同時提供針對 windows、Linux 和 Macintosh 平台的 H.264 解碼器，H.264 影片伺服器和授權工具。

Modulus Video 公司提供廣播、電話用廣播品質的 H.264 標準畫質實時編碼器，並宣佈將與 2005 年中提供高畫質實時編碼器（ME6000）。該公司曾在 2004 年 4 月在 NAB 上演示過高畫質實時編碼器，並獲得 "Pick Hit" 獎項。該公司使用 LSI Logic 的技術。

Tandberg television 公司推出了 EN5990 實時編碼器。DirecTV 和 BSkyB 已經把 EN5990 編碼器用於它們的衛星直播服務（DBS）。

哈雷（Harmonic）也推出了型號 DiviCom MV 100 的實時編碼器，。法國的廣播商 TF1 和 Video Networks Limited（VNL）在倫敦的家用影片點播服務已經宣佈使用該產品。佩斯公司（Pace Micro）為一些主要的直播衛星公司提供了機上盒。

Sony 公司的 PSP 在硬體上提供對 H.264 Main Profile Level 3 解碼的支援。

Nero Digital 公司推出的由 Nero AG 和 Ateme 共同開發的軟體包提供了對 H.264 編碼的支援，並在 Doom9 獲得 "Pick Hit"[1] 獎項。

Sorenson 提供了 H.264 實現方式。相關的編解碼軟體 Sorenson AVC Pro codec 已經包含在 Sorenson Squeeze 4.1 for MPEG-4 中。

自由軟體版 x264 的編解碼軟體採用 GPL 授權方式下載。

InterVideo 的 WinDVD 7 於 2005 年 6 月 24 日正式發佈。發佈版本分為 WinDVD 7 Gold 黃金版和 WinDVD 7 Platinum 白金版，白金版支援 H.264/MPEG-4 AVC 解碼播放，推薦組態為 P4 3.6G。（不屬於原文）

ATI 於 2005 年 10 月 5 日發佈的 Radeon X1300、X1600、X1800 系列圖形晶片支援 H.264 硬體加速解碼。

Matrox 公司推出的 Matrox Mxo2 mini with MAX 產品提供了 H.264 加速運算的功能，可以更快的輸出檔案。

## 設計

The maximum bit rate for High Profile is 1.25 times that of the Base/Extended/Main Profiles, 3 times for Hi10P, and 4 times for Hi422P/Hi444PP.

The number of luma samples is 16x16=256 times the number of macroblocks (and the number of luma samples per second is 256 times the number of macroblocks per second).

## 註釋

## 參考資料

## 外部連結