有的放矢,遠端操控中實時音視訊的優化之道

騰訊雲加社群發表於2021-12-16

點選一鍵訂閱《雲薦大咖》專欄,獲取官方推薦精品內容,學技術不迷路!

image.png

5G遠端操控場景,對實時音視訊傳輸的時延、卡頓率和抗弱網等指標都有著非常高的要求,本文將會介紹如何結合5G網路特點,在實時音視訊通訊鏈路中進行聯合優化,滿足行業場景遠控需求,降低畫面時延。

image.png

在上一篇文章中,我們介紹了遠端操控的技術要點。從這一章開始,筆者將會依次介紹遠端操控三大技術的應用及優化重點內容。本文就將會以實時音視訊通訊技術開始,其主要被用於解決遠端操控中被操控裝置或車輛周邊環境畫面和聲音向遠處控制端的實時傳輸,方便遠端駕駛員或操控員能夠清晰地瞭解被控裝置周遭情況,從而進行鍼對性操控。比如車輛前進中前方和側後方的畫面,挖掘機作業過程中的抓臂畫面都需要通過實時音視訊技術進行遠端傳輸。

為保證操控的實時性和流暢性,相比聲音的傳輸,遠端操控主要對畫面的傳輸有非常高的要求,針對畫面時延、卡頓率和抗弱網能力等核心指標更是如此。以低速遠端駕駛場景為例,時延需要小於200ms, 儘量能接近100ms,卡頓率最好低於千分之2,能夠抵抗極端情況下與平均RTT時延相當的網路波動和20%-30%左右的丟包率。這些指標的要求往往明顯高於此前的遠端會議、直播、監控等應用場景,而對於實時音視訊技術來講,降低時延,與降低卡頓率、提高抗弱網能力往往是相互矛盾的,因此這是一個非常大的挑戰。

遠端操控與其他應用場景的指標對比

企業微信截圖_16391329328340.png

按圖循跡,探索優化重點

下圖是一個典型視訊傳輸鏈路的示意,主要由採集、編碼、傳送、傳輸、接收、解碼、渲染等主要模組構成。
企業微信截圖_16391330229705.png

典型視訊傳輸鏈路示意圖

採集:從相機中採集出原始的影像幀資料

編碼:對採集的原始影像幀進行編碼

傳送:對編碼後的視訊幀進行打包傳送

傳輸:將打包後的資料從網路中傳輸

接收:接收打包資料並恢復出視訊幀

解碼:對視訊幀進行解碼恢復出原始影像幀資料

渲染:對原始影像幀資料進行渲染輸出到螢幕

實時音視訊通訊中,主要承擔抵抗網路波動、降低卡頓率責任的是接收模組中的jitterbuffer,同時它也是時延的主要貢獻者之一。不同專案中jitterbuffer的實現略有區別,但基本上都會有亂序排列、幀檢測、幀快取等功能。jitterbuffer主要負責正確接收視訊幀並適當快取,在確認達到可解碼條件後,根據預估的幀間延遲(兩幀接收時間差-兩幀傳送時間差)平滑後,送入到後續的解碼和渲染模組。這樣即使網路有一定波動,由於jitterbuffer的平滑,相鄰的視訊幀仍可以接近期望時間間隔渲染,從而流暢播放。通常為應對丟包、亂序和時延抖動,網路RTT和時延抖動越大,需要的jitterbuffer也越大,這時由於快取的增大,視訊時延也會相應增大。這就是三大指標之間矛盾的根本由來。

除了接收模組外,我們再看看其他模組的情況。隨著晶片計算能力日益提升,編碼、解碼、渲染等模組的時延已經很小,基本都在10ms以內,甚至可以做到5ms左右,可優化空間不大,對三大核心指標影響較小。採集和傳輸模組的時延,主要受外部客觀條件影響,前者取決於相機,後者取決於網路。傳送模組會對資料傳輸的丟包、時延和抖動產生影響,從影響接收效果。因此為達到三大核心指標,需要做出針對性優化地主要是傳送和接收模組。通過傳送模組的優化,在保證卡頓率和抗弱網能力的基礎上,儘量降低接收端jitterbuffer的大小,從而降低時延。

有的放矢,設計優化方案

對於傳送和接收模組的聯合優化,不同專案的實現不盡一致,複雜程度和效果相差也較大。下面是一個實時音視訊通訊架構中較為複雜的傳送和接收模組實現示意。 騰訊遠端操控產品中實時音視訊通訊也是使用了這樣的構成。

企業微信截圖_16391331489997.png

傳送和接收模組示意

傳送模組主要由封包協議、擁塞控制、傳送視窗、差錯編碼等構成,其中為提高傳輸的效率和抗弱網能力,封包協議通常都是基於標準RTP協議,底層採用UDP協議。擁塞控制主要是對網路狀態進行估計,為傳送pacing視窗和位元速率提出建議。差錯編碼,主要是為了抵抗RTP包的丟包,提高前向糾錯能力,這樣部分丟包可以通過差錯解碼進行恢復而不依賴重傳。

接收模組中jitterbuffer涉及的亂序快取、幀檢測快取和幀快取外,還有拆包、差錯解碼、鏈路狀態估計反饋等模組;其中鏈路狀態估計反饋,主要是用來估計鏈路的丟包、時延和時延抖動等情況,用來指導jitterbuffer大小設計,並給傳送端擁塞控制提供參考。

上面提到,優化的目的是降低jitterbuffer大小,而幀間時延波動是影響jitterbuffer大小的核心因素。除網路自身波動外,丟包重傳是時延波動峰值的主要貢獻者。因此傳送和接收聯合優化首先要考慮的是降低丟包重傳。騰訊主要是在擁塞控制、差錯編碼上,針對5G遠控場景做了更好的優化,降低了丟包重傳的概率。

擁塞控制:目前常見的用於實時音視訊的擁塞控制方法中,較好的有BBR、GCC等。

BBR主要是基於網路的時延頻寬積,分別探測網路的最大頻寬和最小時延,並認為兩者乘積是網路上能夠承載是資料最大容量,其優點在於可以抵抗隨機的網路時延和丟包波動噪聲,缺點在於最小時延測量時會降低吞吐,對於突發的網路惡化,需要更長的時間才能降到實際頻寬。而且BBR最初不是針對視訊傳輸設計,在實時音視訊中的應用經驗比較有限。

GCC是同時基於時延擁塞控制和丟包擁塞控制,並取兩者最小值。在時延擁塞控制中,為平滑網路波動噪聲對延遲梯度估計的影響,GCC中使用了卡爾曼濾波器來進行處理。GCC優點在於可以同時兼顧時延和丟包,並且有較好的實際應用經驗。

差錯編碼:在網路傳輸中,丟包模型可以理解為是一個刪除通道,資料包在傳輸中會被隨機刪除。因此可以使用適用刪除通道的前向糾錯編碼(FEC),通過增加包傳輸時的冗餘數量來恢復丟包。 考慮糾錯效能和計算複雜度,音視訊傳輸主要使用線性分組碼,常用的有異或編碼、RS碼等。 由於FEC在設計時,主要是面向隨機錯誤,在較短的編碼長度(編碼包數量)下, 這種方式可以抵抗一定程度的隨機丟包。但對於擁塞或網路質量下降導致的突發丟包,較短編碼長度仍無法抵抗,這時傳統會通過增加包之間的時間間隔,並且增加編碼長度,來抵抗突發丟包。

基於5G空口網路的優化增強

在5G遠控場景中,網路時延中5G空口的時延和波動佔比較大,而5G空口的網路模型與傳統路由器有一定區別。 傳統路由以擁塞丟包為主,自身不帶重傳; 5G空口差錯丟包和擁塞丟包都有,自帶一定重傳;傳統路由時延上升主要由擁塞導致, 5G空口由於資源排程週期,也會出現一定程度時延波動,特別是針對上行資料傳輸。5G空口的頻寬跟訊雜比和空口負載有關,會隨時間變化;傳統路由的頻寬相對固定,主要受網路負載影響。

路由器與5G空口網路特點對比
企業微信截圖_16391332188378.png

擁塞控制的優化:可以看出5G空口網路與傳統路由存在較大區別,面對資源排程週期引起的時延抖動和訊號質量帶來的頻寬波動時, BBR擁塞控制適用性有限。考慮到5G空口中訊號質量會導致網路頻寬變化較大,因此可以在GCC時延、丟包擁塞控制的基礎上,增加基於空口信幹噪比和網路負載估計的擁塞控制,這樣對於5G空口網路變化具有更快地反應速度。同時可以修改GCC中時延梯度估計用到的卡爾曼濾波演算法,更好平滑資源排程週期帶來的時延梯度抖動。

差錯編碼的優化:基於5G空口網路特點,可以看出 5G空口由於自身帶重傳,丟包發生概率較少,可以使用較短的編碼長度抵抗隨機發生的丟包。 5G空口中突發丟包的產生往往是由於5G空口訊號質量下突然下降導致,這種深衰落的週期通常跟移動性有一定關係,移動速度越快,週期越短,低速移動時在10ms左右。傳統的通過簡單引入更長包間隔和增加編碼長度的方式無法有效應對,而且會增加傳送資料量,導致丟包惡化。配合基於空口信幹噪比的擁塞控制估計,可以即時預知這種突發丟包,通過降低位元速率,延長髮送時間,而不增加編碼長度,減少突發丟包概率。同時可以引入分組交織的方式,將編碼進行交織,一定程度抵抗突發的丟包。

總體上,5G遠控場景對音視訊的時延要求是非常高的,雖然通過結合5G網路特點,在傳送和接收進行了一些聯合優化,可以滿足一些中低速行業場景的遠控需求,但是離行業理想的100ms指標還是會有一些挑戰,特別是在跨區域的遠控場景。未來還需要更多地引入結合網路的一些聯合優化的手段,另外也可以考慮在相機採集、編碼上進行更多的挖掘,以儘量提升端到端效果。

8毛峻嶺.jpg

毛俊嶺往期精彩文章推薦:解放人與裝置距離,5G時代的遠端操控該如何完成

《雲薦大咖》是騰訊雲加社群精品內容專欄。雲薦官特邀行業佼者,聚焦於前沿技術的落地及理論實踐之上,持續為您解讀雲時代熱點技術、探索行業發展新機。點選一鍵訂閱,我們將為你定期推送精品內容。

相關文章