1. 程式人生 > >Google 視頻編碼格式 VP9 究竟厲害在哪裏

Google 視頻編碼格式 VP9 究竟厲害在哪裏

blank 過濾 自動實現 圖片大小 重建 光柵 target bsp 哪裏

近期 Google 已經開始研究 VP10 了,VP10 是一個由 WebM 和 Motroska 包含的開放、免費視頻編解碼器。Google 也已利用 VP10 來處理 YouTube 4K 視頻。

目前互聯網上使用最多的視頻編碼標準是 Google 研發、無版權費的 VP9。VP9 作為 VP8 的後繼產品,主要競爭對手是 MPEG 的高效視頻編碼標準 HEVC。和 HEVC 相比,VP9 在網絡瀏覽器中有更良好的支持性。它也以其優秀的視頻編碼質量和壓縮效率而被廣泛應用於互聯網視頻網站中。

技術分享圖片

從上圖可以看出 Firefox、Chrome、Opera 等主流瀏覽器都支持。據統計,截止到 2017 年初,大約有 75% 的瀏覽器已經支持 VP9。

那麽 VP9 是如何在原有的視頻編碼標準的基礎上,提升視頻編碼質量和壓縮效率的呢?

VP9 編碼效率提高 50% 以上

VP9 是一種基於宏塊的變換編碼格式,與 HEVC 等視頻編碼標準相比,VP9 等比特流格式的視頻編碼標準相對簡單。

與 VP8 相比,VP9 視頻編碼標準在技術上有許多優化:

  • 支持使用 64×64 像素的編碼單元,這在高分辨率視頻中效果最為明顯;
  • 改善運動矢量的預測,除了 VP8 的四種模式(average/"DC"、 "true motion"、horizontal、vertical),VP9 還支持像素的線性外推的 6 個傾斜方向的幀內預測;
  • 支持將幀分割為具有特定相似性的區域;
  • 對運動矢量的第 8 像素精度、三種可切換的子像素插值濾波器、參考運動矢量、熵編碼、環路濾波、ADST、DCT 等進行優化。

圖片分區優化

VP9 將圖片分成 64x64 大小的宏塊 —— super blocks。super blocks 按照從左到右,從上到下的光柵順序處理。同時與其他編解碼器相同,super blocks 最小可以細分到 4x4 。細分宏塊方式與 HEVC 一樣通過遞歸四叉樹編碼結構完成,但是 VP9 支持水平或垂直細分。

技術分享圖片

此外,VP9 也支持拼貼,圖片會被分解成沿著 super blocks 邊界拼貼成網格。與 HEVC 不同的是,這些網格能均勻地分布,並且有兩個冪數。網格的寬度 256 像素與 4096 像素之間。

比特流編碼

VP9 使用 8 位算術編碼引擎 bool-coder 壓縮比特流。概率模型對整個幀是固定的,所有概率模型在幀數據開始解碼之前都是已知的。這些概率模型存儲在幀的上下文中,解碼器維護在上下文中的四個概率模型。

每一幀編碼組成:

  • 未壓縮的標題:十幾個字節,包含像圖片大小,循環過濾器強度等;
  • 壓縮標頭:傳輸用於幀的 Bool 編碼部分;
  • 壓縮幀數據(布爾編碼數據):重建幀所需的數據,包含宏塊分區大小,運動矢量,幀內模式和變換系數。

VP9 與 VP8 不同的是,不存在數據分區,所有數據類型以 super blocks 編碼順序交織。

幀內預測

VP9 中的幀內預測類似於 AVC / HEVC 的幀內預測,遵循變換宏塊分區。因此幀內預測操作總是正方形的。比如說,具有 8×8 變換的 16×8 塊會導致兩次 8×8 亮度預測操作。

VP9 有 10 種不同的預測模式,其中 8 個預測模式是定向的。像其他編解碼器一樣,幀內預測需要兩個 1D 陣列,其中包含相鄰像素塊重構的左側像素和上側像素。左側數組的高度與當前塊的高度相同,上側數組寬度是當前像素塊的兩倍。

技術分享圖片

幀間預測

VP9 幀間預測使用 ? 像素進行運動補償。一般情況下,運動補償是單向的,每個塊一個運動矢量,沒有雙向預測。不過,VP9 也支持“復合預測”(雙向預測),其中每個塊有兩個運動矢量並且兩個結果預測樣本被平均。為了避免雙向預測的專利限制, Google 僅在標記為不可顯示的幀中才啟用“復合預測”(雙向預測)。

此外,VP9 提供了一個新功能,每塊可以選擇三種不同的子像素插值濾波器:

  • 正常的第 8 像素;
  • 平滑的第 8 像素,可以進行平滑或模糊預測;
  • 銳利的第 8 像素, 可以進行銳利預測。

殘差信號編碼

VP9 支持四種變換大小:32x32、16x16、8x8 和 4x4。這些變換與其他大多數編碼一樣,是 DCT 的近似整數。在幀內編碼宏塊中,垂直和水平變換路徑中的一者或兩者會是 DST(離散正弦變換)。

雖然 Google 已經在研究 VP10,但是距離 VP10 的全面應用還有較長的時間。VP9 才是目前最具有普及意義的視頻編碼標準。

快速啟用 VP9

目前,又拍雲多媒體處理已支持 VP9 視頻編碼標準。客戶在在進行音視頻處理時,只需把視頻編碼格式設置成 libvpx-vp9,即可自動實現 VP9 視頻編碼標準,為終端用戶推送VP9 格式。

技術分享圖片

推薦閱讀:

VP9 vs H.265——下一代視頻編碼標準的王道之爭

實時音視頻互動:基於 WebRTC 技術的實戰解析

Google 視頻編碼格式 VP9 究竟厲害在哪裏