高级视频编码

H.264 / AVC

影像編碼

由 ITU-T 與 ISO/IEC 聯合制定的影片壓縮標準,分別以 H.264 和 MPEG-4 AVC 釋出,廣泛用於廣播、光碟、網路影片、移動裝置和實時通訊。

詳細說明

H.264,又稱 AVC(Advanced Video Coding,高階影片編碼),是由 ITU-T 影片編碼專家組與 ISO/IEC 運動影象專家組聯合制定的影片壓縮標準。兩家組織於 2001 年成立聯合影片組(Joint Video Team,JVT),第一版規範在 2003 年獲批,並分別作為 ITU-T H.264 與 ISO/IEC 14496-10 釋出。MPEG 體系因此也把它稱為 MPEG-4 Part 10 或 MPEG-4 AVC。

H.264 與早期的 MPEG-4 Visual 不是同一種編碼。

MPEG-4 Visual 屬於 ISO/IEC 14496-2,常見實現包括早期的 DivX 和 Xvid;AVC 屬於 ISO/IEC 14496-10。單寫“MPEG-4 影片”不能準確區分二者。

標準規定合規碼流的語法以及解碼器如何重建畫面,並不規定編碼器必須怎樣尋找運動、分配位元速率或選擇預測模式。H.264 編碼器通常先利用同一幅畫面中已經重建的相鄰區域進行幀內預測,或從其他參考畫面中尋找相似內容進行幀間預測,再對原始影象與預測結果之間的殘差執行變換、量化和熵編碼。解碼端依據碼流中的預測資訊與殘差資料重建畫面,因此預測精度、參考結構和量化選擇會共同影響所需資料量。基礎編碼單位是宏塊,一個宏塊通常覆蓋 16×16 個亮度取樣及相應的色度取樣。幀內編碼可按 16×16 或更小區域選擇不同方向的預測;High Profile 還引入 8×8 幀內預測。幀間宏塊能夠劃分為 16×16、16×8、8×16、8×8,後者又可繼續細分至 4×4,使運動邊界和區域性變化分別使用不同的運動向量。標準支援多參考畫面和亞畫素運動補償,但編碼器是否進行大範圍搜尋、使用多少參考幀以及怎樣判斷最優劃分,屬於實現策略而非碼流規範。

預測殘差主要透過 4×4 整數變換處理,High Profile 可使用 8×8 變換。其運算形式經過規定,使不同解碼器能夠在有限整數精度下得到一致結果。量化會捨棄部分變換系數精度,是有失真壓縮的主要來源;量化強度可以在影象、切片或宏塊範圍內調整。重建環路中的去塊濾波器隨後處理塊邊界,它的輸出既用於顯示,也成為後續預測的參考畫面,因此不是播放器任意附加的畫面美化功能。H.264 定義 CAVLC 與 CABAC 兩類主要熵編碼。CAVLC 根據鄰近塊的係數特徵選擇可變長度碼,結構相對簡單;CABAC 先把語法元素轉換為二進位制符號,再依據上下文模型進行自適應算術編碼,通常能進一步減少位元速率,但計算與狀態依賴更復雜。Baseline Profile 不使用 CABAC,Main 和 High 等配置檔案則可以使用。

碼流可包含 I、P、B 等不同切片型別。I 切片僅以同一畫面內的資訊預測,P 和 B 切片可以引用其他畫面;B 切片並不必然只能引用時間上前後各一幅畫面。IDR 影象是一類具有明確隨機訪問和參考清理語義的即時解碼重新整理點,而普通 I 影象只說明其內部切片採用幀內編碼,不能在所有碼流結構中視為完全等價的“關鍵幀”。

配置檔案與級別描述的是兩個維度。配置檔案限定可使用的編碼工具、位深和色度格式,例如 Baseline、Main、High,以及面向更高位深或專業色度取樣的 High 10、High 4:2:2 和 High 4:4:4 Predictive;級別則限制最大畫面取樣數、每秒處理量、解碼畫面緩衝和位元速率等資源。裝置聲稱支援 H.264,並不表示它能夠解碼所有配置檔案、級別、解析度和參考幀組合。H.264 同時規定逐行和隔行影片的編碼方式。場自適應影象編碼可按整幅影象選擇幀或場結構,宏塊自適應幀場編碼則允許在同一畫面的宏塊對之間選擇幀編碼或場編碼。後者能更細緻地適應靜止區域與隔行運動,但也增加編碼判斷和解碼依賴。廣播與早期高畫質光碟中的 1080i 節目可能使用這些工具,逐行網路影片通常不需要它們。

經過編碼的資料被組織為網路抽象層單元,引數集、切片和補充增強資訊可以按應用需要對映到不同傳輸環境。H.264 本身不是檔案格式。

碼流可封裝在 MP4、QuickTime、Matroska、MPEG-2 Transport Stream、M2TS 或其他容器中,並與多種音訊和字幕組合。副檔名不能單獨證明內部影片編碼,編碼標準也不規定章節、選單或數字版權管理。AVCHD、Blu-ray Disc、數字電視、網路流媒體、視訊會議、監控錄影和移動裝置都採用過 H.264,但各應用會進一步限制允許的配置檔案、級別、幀率和位元速率。Blu-ray 上的 AVC 需要遵守光碟應用規範,不能把任意合規 H.264 檔案直接寫入資料目錄便稱為 Blu-ray Video。x264、OpenH264 以及晶片中的硬體編碼器是生成或處理 H.264 碼流的具體實現,不是新的格式名稱。

H.264 沒有為某一解析度規定唯一合適的位元速率,也不保證採用它的檔案必然優於 MPEG-2、VC-1 或後繼編碼。畫面內容、源素材、預處理、編碼器實現、位元速率控制、關鍵幀結構和運算時間都會改變壓縮結果;“H.264”標識說明解碼語法,而不是對最終畫質的評級。