在音視訊發展的歷程中,編解碼無疑是其最核心的功能,編解碼標準的更新換代也極大促進了音視訊技術的發展以及行為模式的變更。從電視到網路視訊以及現在的網路直播、點播、音視訊會議等等,這些變化的背後都離不開音視訊編解碼技術的更新迭代。比如 H.264(仍然是目前使用最多的編解碼規範)以及 H.265/HEVC(部分大廠在使用 優酷 騰訊等),以及國內的 AVS 系列。
h.26x 系列
視訊編碼標準的發展簡史
LoveYFan
H.261-視訊編奠基者
H.261 設計的目的是能夠在頻寬為 64kbps 的倍數的綜合業務數字網(ISDN for Integrated Services Digital Network)上傳輸質量可接受的視訊訊號。編碼程式設計的位元速率是能夠在 40kbps 到 2Mbps 之間工作,能夠對CIF和QCIF解析度的視訊進行編碼,即亮度解析度分別是 352x288 和 176x144,色度採用4:2:0取樣,解析度分別是 176x144 和 88x72。
H.261 在影像編碼上使用了我們現在比較熟悉的離散餘弦變換(DCT)演算法, 它在後來的 JPEG 編碼中起主要作用。但不止於此,它引入了一系列針對視訊的特性,奠定了現代視訊編碼的基礎,其中主要有巨集塊(Macroblock)和基於巨集塊的運動補償(Motion Compensation)。
H.261 使用 YCbCr 顏色空間,並採用4:2:0色度抽樣,每個巨集塊包括 16x16 的亮度抽樣值和兩個相應的 8x8 的色度抽樣值。YCbCr 又成為 YUV,仍然是現在編解碼規範所採用的色彩空間。
巨集塊與基於運動補償的幀間預測
我們知道,視訊是由一幀一幀的影像組成的組合,一般情況下一秒鐘的視訊中會包含 24、25、30、60 或更多張圖片,它們按照一定的時間間隔播放出來,基於視覺殘留原理形成了流暢、會動的畫面。在連續的幾幀之間,實際上存在著大量重複的畫面,比如說下面這個例子:
一個白色檯球在綠色桌面上面運動
用小球運動的方向和距離來描述影像的變化
如果是以傳統的思路對每一幀影像做壓縮的話,顯然整個視訊在壓縮過後仍存在大量的冗餘。那麼怎麼辦呢?H.261 標準引入了巨集塊的思維,它將整個畫面切分為許多小塊,然後再引入基於運動補償的幀間預測——畫面的大部分都是不動的,那麼我們將不動部分的區塊沿用之前的壓縮結果,動的部分用運動方向加距離這樣一個向量來描述不就可以節省出大量的儲存空間了嗎?
DCT 演算法
將 8x8 個畫素分成一個塊
DCT 演算法起源於上世紀 70 年代,到了 80 年代中後期,有研究者開始將其用於影像壓縮。這種演算法可以將影像從空間域轉換到頻率域,然後做量化——減少人眼敏感程度較低的高頻資訊,保留絕大部分低頻資訊,從而減少影像的體積。最後再用高效的資料編碼方式將處理過後的資料進一步壓縮,這裡使用了 Zig-Zag 掃描和可變長編碼。
在 H.261 及之後基於 H.261 框架的視訊編碼中,DCT 演算法主要針對的是關鍵幀的壓縮,所謂關鍵幀,就是在運動補償中作為基準參考的一幀。打個比方,就像 Flash 動畫中的關鍵幀一樣,它定義了一個起點,後續的幾幀都是基於這個關鍵幀演算出來的。因為它只做幀內壓縮,不涉及其他幀,又被稱為 Intra-frame(幀內編碼幀),簡稱 I 幀。
MPEG-1:引入幀型別概念
MPEG-1 是為CD光碟介質定製的視訊和音訊壓縮格式。MPEG-1 採用了塊方式的運動補償、離散餘弦變換(DCT)、量化等技術,併為 1.2Mbps 傳輸速率進行了優化。MPEG-1 隨後被Video CD採用作為核心技術。
音訊-MP3
MPEG-1 音訊分三代,其中最著名的第三代協議被稱為 MPEG-1 Layer 3,簡稱MP3,目前仍然是廣泛流傳的音訊壓縮技術。
視訊-引入 B 幀以及 GOP
在 H.261 中其實已經有視訊幀的概念了,比如上面的關鍵幀(就是一張完整的靜態影像,可以直接被解碼出來),另外的幀則是通過運動補償演算法在關鍵幀之上計算得到的。
不過 MPEG-1 真正引入了幀類別的概念,原來的關鍵幀被稱為“I 幀”,基於幀間預測計算得到的幀為 P 幀。在這兩種 H.261 已有的幀型別外,它引入了一種新的幀:雙向預測幀,也叫作 B 幀。
不過引入 B 幀的同時,也使編解碼的複雜度提高了,MPEG-1 又提出了 GOP(Group of pictures),即 I 畫格和 I 畫格之間的畫格排列。
影像群組就是一組以 MPEG 編碼的影片或視訊串流內部的連續影像。每一個以 MPEG 編碼的影片或視訊串流都由連續的影像群組組成。
下圖是 GOP 示例
MPEG-2:DVD 標準
對於 MPEG-1,它並沒有太大的改動,主要是針對 DVD 應用和數字時代進行了改良。
支援隔行掃描
隔行掃描(英語:Interlaced)是一種將影像顯示在掃描式的顯示裝置上的方法相比逐行掃描,隔行掃描佔用帶、寬比較小。掃描裝置交換掃描偶數行和奇數行。
一個慢速的隔行掃描的示意
H.263:熟悉的 3GP 視訊
原先的 H.261 和 MPEG-1 都是偏向於低位元速率應用的,隨著網際網路和通訊技術的飛速發展,人們對網路視訊的需求在提高,在低位元速率下追求更高質量的視訊成為了新的目標,而作為通訊業的一大標準制定者,ITU-T 在 1995 年推出了 H.261 的直接繼承者——H.263。
在上世紀 90 年代,3GP 也是風靡一時,它減少了儲存空間和較低的頻寬需求,讓手機上有限的儲存空間可以使用。目前在 3GP 中 H.263 仍然佔據著主流地位。
H.264/MPEG-4:到了熟悉的 Part
H.264/AVC 是一種面向塊,基於運動補償的視訊編碼標準 。到 2014 年,它已經成為高精度視訊錄製、壓縮和釋出的最常用格式之一。
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)。
- .....
H.265/HEVC:尷尬的繼任者
作為 H.264 的繼任者,HEVC 被認為不僅提升影像質量,同時也能達到 H.264/MPEG-4 AVC 兩倍之壓縮率(等同於同樣畫面質量下位元率減少到了 50%),可支援4K清晰度甚至到超高清電視(UHDTV),最高清晰度可達到 8192×4320(8K清晰度)。
下圖是 H265 與 h264 主觀視訊效能比較
從上面的效能比較我們知道 H.265 在各種引數上都要優於 H.264,那為什麼說它是尷尬的繼任者呢,
- 現有大部分音視訊還是以 H.264 為主,且 H.264 可以滿足大部分的場景
- 授權費過於昂貴,國內外音視訊服務廠家被 H.264 已經薅了一次羊毛,如果再支援 H.265 又要交授權費用,所以目前只有一部分大廠(騰訊,優酷)再特定的影片上使用。
- H.266 已經發布,所以如果確實有需求的可能等著接入 H.266,不太需要的仍然不會接入 H.265,所以它的位置比較尷尬。
不過 H.266 可能還需要幾年的發展,留給 H.265 的時間不多了,不過它仍然有機會。
H.266/VVC:未來編碼
它來了它來了,它邁著六親不認的步伐走來了,必將引領新一代音視訊世界的發展,它就是 H.266/VVC。
2020 年 7 月,H.266/VVC 視訊編解碼標準宣佈編輯完成,也是這個時刻為未來 10 年內音視訊發展方向指明瞭方向。
VVC 全稱 Versatile Video Coding(多功能視訊編碼),也稱為 H.266、MPEG-I 第 3 部分或未來視訊編碼(FVC)。VVC 的設計初衷是為了在同樣的視訊質量下達到更大的壓縮比、更低的位元速率,為 4k、8k 超清視訊、360 全景視訊等更多場景賦能。當然 VVC 還有其他特性:
- 無損和主觀無失真壓縮。
- 4K 到 16K 的解析度以及全景視訊
- 10 至 16 位的YCbCr 4:4:4、4:2:2 和 4:2:0、BT.2100 寬色域
- 峰值亮度為 1000、4000 和 10000尼特的高動態範圍(HDR)
- 輔助通道(用於記錄深度,透明度等)
- 0-120 Hz 的可變幀速率和分數幀速率
- 關於時間(幀速率)、空間(解析度)、訊雜比、色域和動態範圍差異的可適性視訊編碼
- 立體聲/多視角編碼
- 全景格式
- 靜態影像編碼
該標準預期的編碼複雜度為 HEVC 的數倍(最多十倍),但具體取決於編碼演算法的質量。其解碼複雜度預期約為 HEVC 的兩倍。
視訊標準更新換代/編碼效率的更新
PS
• VTM = VVC test model, latest version is VTM-10.0 (測試模型參考軟體平臺)
• JVET = Joint Video Experts Team of the ITU-T VCEG and ISO/IEC MPEG (VVC 標準委員會)
H.266/VVC 優點
降低成本
現有的 H.264/H.265 已經滿足大部分的音視訊業務需求,但是在一些業務下已經達到了瓶頸,還有 CDN 的頻寬流量也是一比很大的投入,如果能在在同樣的視訊質量下達到更大的壓縮比、更低的位元速率,那麼就意味著能以同樣的 CDN 伺服器服務更多的客戶,降本提效。
賦能更多場景
新興的業務比如 VR(Virtual Reality 虛擬現實),AR(Augmented Reality 擴增實境),360 全景等,必須使用 4k 甚至更高的 8k 解析度才能達到效果,在這個情境下就是如何更快(低延遲)、更好(解析度)、更少(低位元速率)的傳輸資料,現有的編解碼方案已經無法滿足。國內外 VVC 發展現狀
國內 H.266 的發展
- 積極參與 H.266 的標準制定,其中代表的是騰訊、阿里,都在 H.266 制定標準的過程中提交了幾百份提案,被採納率過半。積極參與規則的制定,後面才有發言權,這是血的教訓。
- 騰訊開源首個 H.266 編解碼器https://github.com/TencentClo...,詳情請參看https://www.infoq.cn/article/...
AVS 系列
AVS 發展歷史
國內的 AVS 編解碼標準由於起步較晚,大部分專利都在國外,大部分國內企業還是會淪落到任人宰割的境地。另外 AVS 編碼體系效能上還是有所不足。根據 IEEE 出具的一份 HEVC/VP9/AVS2 編碼效率對比報告,其中在隨機訪問條件下,HEVC 效能優於 VP9 24.9%,AVS2 6.5%;在延遲條件下,HEVC 優於 VP9 8.7%,AVS2 14.5%。在某些領域,AVS2 對比 HEVC 已經相差不大,但從總體效能和應用規模來看,AVS2 還有很長的路要走。所以即使國家在極力推動 AVS,其應用場景還是比較少,國企裡用的比較多。
Google 系列
VP8
從技術角度來說,VP8 採用的技術是類似於 H.264 的。雖然在我們看到的宣傳中,VP8 擁有比 H.264 更佳的壓縮效率,但在實際應用中,由於它在設計上有一定的瑕疵,表現並不如 H.264,最終它雖然進入了 Web 標準,但也沒見有人用它,反而是由它的幀內壓縮技術提取而成的 WebP 受到了歡迎。
VP9
VP8 的表現並不理想,Google 很快就推出了它的繼任者——VP9。這次,他們參考的是 HEVC,設計目標同樣是高解析度下的高效編碼。VP9 中的一些設計是受到了 HEVC 的影響的,比如說同樣最大為 64x64 的超級塊(Super Block)。最終 VP9 達成的結果是提供了比 VP8 高達 50%的效率提升。看起來它能夠和 HEVC 比肩了,但是它也遇到了和 VP8 相似的問題,推廣不開。VP9 的應用範圍實際也侷限在 Google 自家的 Youtube 中,只能說是缺少實際應用場景。
未來音視訊發展的思考與展望
深度學習以及端-端智慧賦能未來音視訊發展。
深度學習
通過模型訓練 AI 來智慧調整編解碼器引數。
端智慧
建立端-端的通訊鏈路