高级視像編碼

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”標識説明解碼語法,而不是對最終畫質的評級。