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

在上一篇文章中,我們介紹了遠端操控的技術要點。從這一章開始,筆者将會依次介紹遠端操控三大技術的應用及優化重點内容。本文就将會以實時音視訊通信技術開始,其主要被用于解決遠端操控中被操控裝置或車輛周邊環境畫面和聲音向遠處控制端的實時傳輸,友善遠端駕駛員或操控員能夠清晰地了解被控裝置周遭情況,進而進行針對性操控。比如車輛前進中前方和側後方的畫面,挖掘機作業過程中的抓臂畫面都需要通過實時音視訊技術進行遠端傳輸。
為保證操控的實時性和流暢性,相比聲音的傳輸,遠端操控主要對畫面的傳輸有非常高的要求,針對畫面時延、卡頓率和抗弱網能力等核心名額更是如此。以低速遠端駕駛場景為例,時延需要小于200ms, 盡量能接近100ms,卡頓率最好低于千分之2,能夠抵抗極端情況下與平均RTT時延相當的網絡波動和20%-30%左右的丢包率。這些名額的要求往往明顯高于此前的遠端會議、直播、監控等應用場景,而對于實時音視訊技術來講,降低延遲時間,與降低卡頓率、提高抗弱網能力往往是互相沖突的,是以這是一個非常大的挑戰。
遠端會議
直播(連麥)
監控
遠端操控
時延要求
<300-500ms
< 300-500ms
< 1-2秒
< 100-200ms
卡頓率
<1%
< 1%
—
< 0.2%
抗丢包
40%-60%
20%-30%
抗時延抖動
>200ms
>50ms-100ms
下圖是一個典型視訊傳輸鍊路的示意,主要由采集、編碼、發送、傳輸、接收、解碼、渲染等主要子產品構成。
采集:從相機中采集出原始的圖像幀資料
編碼:對采集的原始圖像幀進行編碼
發送:對編碼後的視訊幀進行打包發送
傳輸:将打包後的資料從網絡中傳輸
接收:接收打包資料并恢複出視訊幀
解碼:對視訊幀進行解碼恢複出原始圖像幀資料
渲染:對原始圖像幀資料進行渲染輸出到螢幕
實時音視訊通信中,主要承擔抵抗網絡波動、降低卡頓率責任的是接收子產品中的jitterbuffer,同時它也是時延的主要貢獻者之一。不同項目中jitterbuffer的實作略有差別,但基本上都會有亂序排列、幀檢測、幀緩存等功能。jitterbuffer主要負責正确接收視訊幀并适當緩存,在确認達到可解碼條件後,根據預估的幀間延遲(兩幀接收時間差-兩幀發送時間差)平滑後,送入到後續的解碼和渲染子產品。這樣即使網絡有一定波動,由于jitterbuffer的平滑,相鄰的視訊幀仍可以接近期望時間間隔渲染,進而流暢播放。通常為應對丢包、亂序和時延抖動,網絡RTT和時延抖動越大,需要的jitterbuffer也越大,這時由于緩存的增大,視訊時延也會相應增大。這就是三大名額之間沖突的根本由來。
除了接收子產品外,我們再看看其他子產品的情況。随着晶片計算能力日益提升,編碼、解碼、渲染等子產品的時延已經很小,基本都在10ms以内,甚至可以做到5ms左右,可優化空間不大,對三大核心名額影響較小。采集和傳輸子產品的時延,主要受外部客觀條件影響,前者取決于相機,後者取決于網絡。發送子產品會對資料傳輸的丢包、時延和抖動産生影響,從影響接收效果。是以為達到三大核心名額,需要做出針對性優化地主要是發送和接收子產品。通過發送子產品的優化,在保證卡頓率和抗弱網能力的基礎上,盡量降低接收端jitterbuffer的大小,進而降低延遲時間。
對于發送和接收子產品的聯合優化,不同項目的實作不盡一緻,複雜程度和效果相差也較大。下面是一個實時音視訊通信架構中較為複雜的發送和接收子產品實作示意。 騰訊遠端操控産品中實時音視訊通信也是使用了這樣的構成。
發送子產品主要由封包協定、擁塞控制、發送視窗、差錯編碼等構成,其中為提高傳輸的效率和抗弱網能力,封包協定通常都是基于标準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空口網絡與傳統路由存在較大差別,面對資源排程周期引起的時延抖動和信号品質帶來的帶寬波動時, BBR擁塞控制适用性有限。考慮到5G空口中信号品質會導緻網絡帶寬變化較大,是以可以在GCC時延、丢包擁塞控制的基礎上,增加基于空口信幹噪比和網絡負載估計的擁塞控制,這樣對于5G空口網絡變化具有更快地反應速度。同時可以修改GCC中時延梯度估計用到的卡爾曼濾波算法,更好平滑資源排程周期帶來的時延梯度抖動。
差錯編碼的優化:基于5G空口網絡特點,可以看出 5G空口由于自身帶重傳,丢包發生機率較少,可以使用較短的編碼長度抵抗随機發生的丢包。 5G空口中突發丢包的産生往往是由于5G空口信号品質下突然下降導緻,這種深衰落的周期通常跟移動性有一定關系,移動速度越快,周期越短,低速移動時在10ms左右。傳統的通過簡單引入更長包廂隔和增加編碼長度的方式無法有效應對,而且會增加發送資料量,導緻丢包惡化。配合基于空口信幹噪比的擁塞控制估計,可以即時預知這種突發丢包,通過降低碼率,延長發送時間,而不增加編碼長度,減少突發丢包機率。同時可以引入分組交織的方式,将編碼進行交織,一定程度抵抗突發的丢包。
總體上,5G遠控場景對音視訊的時延要求是非常高的,雖然通過結合5G網絡特點,在發送和接收進行了一些聯合優化,可以滿足一些中低速行業場景的遠控需求,但是離行業理想的100ms名額還是會有一些挑戰,特别是在跨區域的遠控場景。未來還需要更多地引入結合網絡的一些聯合優化的手段,另外也可以考慮在相機采集、編碼上進行更多的挖掘,以盡量提升端到端效果。
海量技術實踐經驗,盡在雲加社群!
https://cloud.tencent.com/developer