【關注 融雲全球網際網路通訊雲】主要包括五部分內容:三種常用的可分級視訊編碼的特點;WebRTC 採用的編碼器及其應用方式;可分級編碼在 WebRTC 中的應用現狀;基於可分級編碼的目標檢測和位元速率分配方式;AI 和可分級編碼結合的應用前景和研究方向。
三種常用可分級視訊編碼的特點
視訊影像經過數字化之後資料量非常大,現有的網路和儲存裝置無法直接儲存原始的視訊影像,必須對視訊和影像進行壓縮,現有的主流壓縮視訊演算法為 H.264,VP8,VP9,HEVC,VVC 等。一方面,從 H.264 到 VVC,編碼複雜度越來越高,壓縮效率也越來越高;另一方面,傳輸的網路頻寬大小不一,且隨時變化,單一的碼流無法適應多種不同接收端的網路和裝置環境。比如 4G 網路和 5G 網路傳輸頻寬不一樣,若在 4G 和 5G 網路中傳輸同一套碼流,有可能會導致 5G 網路頻寬沒有充分利用,最終影響視訊的觀看效果。
現在視訊應用的環境存在多個不同的接收端,解決這個問題可以採用以下兩種技術:聯播(Simulcast)和可分級視訊編碼(SVC)。
如圖 1 所示,聯播 Simulcast 即同時傳輸多路碼流,不同的碼流具有不同的位元速率,用以傳輸在不同頻寬下的碼流。當終端裝置處於高頻寬的網路環境中,可以傳輸高位元速率的視訊,以便獲得更好的視訊觀看體驗;當終端裝置處於低頻寬的網路環境中,可以傳輸低位元速率的視訊,以便減少視訊播放卡頓的現象。但是 Simulcast 支援的位元速率種類是有限的,難以適應複雜的網路環境。針對這個問題,研究人員提出了可分級視訊編碼 SVC,視訊資料只壓縮一次,卻能以多個幀率、空間解析度或視訊質量進行解碼。比如採用三層空域可分級和兩層時域可分級,可以組合的模式達到六種,和 Simulcast 方式相比,系統的適應性得到很大提升。
(圖1 聯播&可分級)
常用的可分級編碼有三種,分別是:空域可分級(Spatial Scalability)、質量可分級(Quality Scalability)和時域可分級(Temporal Scalability)。
(圖2 可分級編碼常用的三種方式)
空域可分級編碼(圖 3 ),即對視訊中的每幀影像產生多個不同空間解析度的影像,解碼基本層碼流得到的低解析度影像,如果加入增強層碼流到解碼器,得到的是高解析度影像。
(圖3 空域可分級)
質量可分級(圖 4 ),一個可行的做法是,基本層碼流編碼這一路對原始影像 DCT 變換後進行一次粗糙量化,熵編碼後形成基本層碼流。粗糙量化後的資料經反量化後形成基本層係數,與原始影像 DCT 變換系數相減形成差值訊號,再對此差值訊號再進行一次細量化和熵編碼生成增強層碼流。
(圖4 質量可分級)
時域可分級(圖 5),即把視訊序列不重疊地分割成多層,對基本層的幀進行普通的視訊編碼,提供具有基本時間解析度的基本層碼流;對增強層則是利用基本層資料對增強層的幀間預測編碼,生成增強層資料。
(圖5 時域可分級)
WebRTC 採用的編碼器及其應用方式
WebRTC 支援的編碼器包括 VP8,VP9 和 H.264。在使用者感受層面, VP8 和 H.264 兩種編碼器的效果基本上是類似的。VP9 作為 VP8 的下一代編碼器,在高清視訊壓縮方面,比 VP8 和 H.264 效果要好。
如圖 6,綜合編碼器效能和瀏覽器編碼器的支援情況,可以得出如下結論:VP8 和 H.264編碼效果基本一致,一般情況下兩者皆可;VP9 主要用在 Google 公司自己的各種視訊產品中,其中需要特別指出的是,VP9 支援多種 SVC ;HEVC 目前只能在蘋果系統中使用,無法推廣,不建議使用;AV1 同樣太新了,僅僅在 Google 公司的產品中才能很好地支援,暫時不推薦。
(圖6 編碼器在瀏覽器中的支援情況)
可分級編碼在 WebRTC 中的應用現狀
在介紹可分級編碼在 WebRTC 中的應用情況之前,先簡要介紹下 WebRTC 的通訊和組網流程。
如圖 7,客戶端 A 和客戶端 B 通訊,可以採用直連的模式,也可以採用伺服器的模式,在大規模的網路中,都會採用基於伺服器的模式進行轉發、訊號處理等。
(圖7 WebRTC 簡單的流程)
針對多種應用場景具有多個接收端的特點,WebRTC 提供了三種解決方案:Mesh,MCU,SFU。
Mesh 方案(圖 8),即多個終端之間兩兩進行連線,形成一個網狀結構。比如 A、B、C 三個終端進行多對多通訊,當 A 想要共享媒體(如音訊、視訊)時,它需要分別向 B 和 C 傳送資料。同樣的道理,B 想要共享媒體,就需要分別向 A、C 傳送資料,依此類推。這種方案對各終端的頻寬要求比較高。
(圖8 Mesh 方案)
MCU(Multipoint Conferencing Unit)方案(圖 9),該方案由一個伺服器和多個終端組成一個星形結構。各終端將自己要共享的音視訊流傳送給伺服器,伺服器端會將在同一個房間中的所有終端的音視訊流進行混合,最終生成一個混合後的音視訊流再發給各個終端,這樣各終端就可以看到/聽到其他終端的音視訊了。實際上伺服器端就是一個音視訊混合器,這種方案伺服器的壓力會非常大。
(圖9 MCU 方案)
SFU(Selective Forwarding Unit)方案(圖 10),該方案也是由一個伺服器和多個終端組成,但與 MCU 不同的是,SFU 不對音視訊進行混流,收到某個終端共享的音視訊流後,就直接將該音視訊流轉發給房間內的其他終端。
(圖10 SFU 方案)
三種網路不同的頻寬如圖 11 所示。可以看出,SFU 的頻寬最大達到了 25mbps,MCU 最小 10mbps。
(圖11 三種不同網路的頻寬)
在特點方面,Mesh 方案的靈活性比較差;MCU 方案需要對碼流進行類似轉碼、合流、分流等操作;SFU 方案伺服器的壓力小,靈活性更好,受到廣泛歡迎。
如圖 12 為 Simulcast 模式和 SVC 模式轉發方式示意圖。從上下兩個圖可以看出,採用基於 SVC 的碼流分配方式,對於 PC 端而言,具有更大的可修改性。無論採用哪種組網方式,採用 SVC 的方式,都會比採用 Simulcast 的方式具有更好的健壯性。
(圖12 Simulcast 和 SVC 模式轉發方式)
支援情況如圖 13 所示。從圖中可以看出,H.264 僅支援 Simulcast,VP8 支援時域可分級,VP9 則全方位支援 SVC 編碼。VP9 是 Google 公司在主推的編解碼器,但是在 H.264 編解碼器優化方面的推進力度不大,一定程度上限制了 WebRTC 的應用,比如蘋果公司最新出品的 iPhone13 手機自帶 H.264 的硬體加速功能,如果採用 AV1 編碼器,雖然可以獲得 SVC 的優點,但是無法進行硬體解碼。在 WebRTC 中,Simulcast 是預設通過多執行緒技術,同時啟動多個 OpenH264 編碼器, SVC 則是可以呼叫 OpenH264 進行時域和空域可分級編碼。
(圖13 可分級編碼在 WebRTC 的支援情況)
基於可分級編碼的目標檢測和位元速率分配方案
對於 N 路的 SFU 而言,SFU 必須考慮剩餘 N-1 個終端位元速率總和。對於大多數視訊會議而言,在給定的時域和空域層條件下的位元速率和總位元速率比例基本恆定。如圖 14 所示。
(圖14 不同層碼流分佈圖)
根據圖 14 的現象,將視訊運動作為一個主要是衡量指標,對碼流進行分配。相關論文具體的方案框架如圖 15 所示。
(圖15 SVC 編碼器位元速率分配)
該方案存在兩個改進空間:第一個是運動量度的方法採用的當前幀和前一幀的差,難以準確地反映出視訊運動變化的情況。第二個是增加除了運動特徵以外的其他特徵,以便更好地反映影像視訊的變化。擬採用的解決方案如圖 16 所示。
(圖16 擬採用的解決方案)
在 WebRTC 中,H.264 的編碼器採用思科公司開源的 OpenH264 編碼器,OpenH264 可分級編碼配置檔案展示如下。這個配置檔案設定了時域分級層兩層。
(圖17 OpenH264 可分級編碼配置檔案)
SVC 碼流的特點是一套碼流具有多層結構,在實際使用中,需要對碼流進行提取操作。對於時域可分級而言,通過分析每個 NAL 中的 Temporal ID 對碼流進行提取;對於空域可分級而言,通過分析每個 NAL 中的 Spatial ID 對碼流進行提取;對於質量可分級而言,通過分析每個 NAL 中的 Quality ID 對碼流進行提取。
從圖 18 中可以看出,OpenH264 的基本層的碼流可以直接採用 AVC 解碼器解碼,基本層的 SVC_extension_flag 等於1。
(圖18 可分級編碼基本層解碼圖)
SVC 增強層碼流的 NAL 包含 SVC 的語法,需要對 SVC 的碼流進行轉碼,可分級編碼的參考軟體 JSVM 中有專門的轉碼模組,圖 19 為轉碼過程,可以發現多個 NAL 單元被重寫成 AVC 的格式。
(圖19 可分級編碼增強層 NAL 層轉碼)
圖 20 為用 JSVM 轉換之後的碼流解碼效果,可以用標準的 AVC 解碼器解碼。
(圖20 NAL 層轉碼後的解碼圖)
AI 和可分級編碼結合的應用前景和研究方向
可分級編碼中最頻繁使用的方法是空域可分級技術,但是不同解析度在轉換時,質量下降比較明顯。ICME2020 會議上,有學者提出了用於視訊編碼的超分辨模型,該模型通過提取不同時刻的影像進行特徵融合來重建出高解析度影像。實驗結果表明,超分效果有提升。
(圖21 視訊超解析度結構圖)
將該模型用於可分級編碼器中,可以有效地改善不同解析度碼流切換的時候,給人帶來的不適感。
MPEG5 提出了 Low Complexity Enhancement Video Coding(LCEVC),該編碼方式和 H.264 相比,在相同的 PSNR 下,壓縮效率更高。編碼器如圖 22 所示。其中基本的編碼器 Base Encoder 可以選用任意一種現成的編碼器,比如 H.264,VP8,VP9 等。
WebRTC 和 LCEVC 相互結合,是未來的一個發展方向。作為一個新的視訊編碼標準,其具有幾個特徵:提升了基本層編碼的壓縮能力,具有低編碼和解碼複雜度,提供了一個額外的特徵增強平臺等。
從圖 22 可以看出,編碼複雜度主要在取決於 Base Encoder,在 WebRTC 中廣泛使用的 H.264 如果採用 LCEVC 的方式進行增強,在複雜度增加的情況下,編碼效果會有明顯地提升。一般而言採用 H.264 編碼的 1080P 高幀率的實時體育視訊流需要 8Mbps 的最高位元速率,而採用 LCEVC 僅僅需要 4.8Mbps。
(圖22 LCEVC 編碼器)
鑑於 LCEVC 編碼的效果,可以判斷,LCEVC 和 WebRTC 結合,將是一個重要的研究和應用方向。