【關注 融雲全球網際網路通信雲】主要包括五部分内容:三種常用的可分級視訊編碼的特點;webrtc 采用的編碼器及其應用方式;可分級編碼在 webrtc 中的應用現狀;基于可分級編碼的目标檢測和碼率配置設定方式;ai 和可分級編碼結合的應用前景和研究方向。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAnYldnL5YjN2ETYyUTO4QmY0Y2NxYzXwIzNwATMxAzLcFTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL2M3Lc9CX6MHc0RHaiojIsJye.webp)
視訊圖像經過數字化之後資料量非常大,現有的網絡和儲存設備無法直接存儲原始的視訊圖像,必須對視訊和圖像進行壓縮,現有的主流壓縮視訊算法為 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 支援的編碼器包括 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 的通信群組網流程。
如圖 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 層轉碼後的解碼圖)
可分級編碼中最頻繁使用的方法是空域可分級技術,但是不同分辨率在轉換時,品質下降比較明顯。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 結合,将是一個重要的研究和應用方向。