低延時音視頻技術在OPPO云渲染場景的應用
一、云渲染場景的傳輸需求及挑戰
首先介紹一下云渲染業務對音視頻的一些傳輸要求,以及面臨的挑戰。
1、云渲染場景應用
隨著互聯網技術的發展,音視頻應用經歷了三個階段:
第一個階段主要為 2008~2013 年,也就是 3G 時代,以長視頻為主,以 PDN 點播、 VOD 點播為核心技術。
第二個階段從 2013~2019 年,進入 4G 時代,誕生了很多音視頻的產品,比如播直播、短視頻,音視頻技術。
第三個階段從 2019~ 至今,進入了 5G 時代,隨著 5G 和云基礎設施的發展,給音視頻技術帶來了更多施展空間,音視頻技術進入繁榮時期,這一時期的應用和技術主要有云會議、互動直播、遠程協作、XR、云游戲、自由視角等等。
什么是云渲染,簡而言之,云渲染是利用云端算力來解決終端算力瓶頸問題,進而解放端側算力壓力,主要的場景有虛擬社交,虛擬演播廳、虛擬演唱會、云游戲、遠程協作等。
云渲染平臺借助云端算力和音視頻技術將引領下一代多媒體互聯發展。
2、云渲染平臺架構
云渲染平臺主要有兩大部分,第一部分是云端渲染平臺,第二部分是跨終端平臺,兩個部分中間通過串流技術依托網絡傳輸進行鏈接。基本原理是把 3D 應用渲染在云端運行,通過接收終端的控制指令渲染相應音視頻畫面,再通過流化技術由網絡推給終端用戶進行體驗。
串流是云渲染業務用戶體驗的核心點,云渲染將本地應用的算力移到云端,但需要與本地應用有相同的體驗,從體驗角度來講,云渲染對流化傳輸有兩個需求:
① 如何實現沉浸式超高清體驗:相比以前的音視頻,比如云會議、在線課堂,云渲染需要實現高清體驗;以前 1080P、720P 分辨率,1~2M 的帶寬基本滿足,但現在的視頻畫面更高清,比如 4K、8K 畫質,音視頻傳輸負載變更大,從原來的 1M 級變成 10M 級,自由視角的場景甚至到 100M 級。
② 如何實現實時互動:零延時是相對概念,用戶無感知延時就叫零延時,目前百毫秒延時能夠給用戶提供較好的體驗,百毫秒延時成為未來的趨勢。
二、RTC 和云渲染業務的結合
本章節將介紹 OPPO 在云渲染場景與 RTC 的結合,傳輸架構所做的調整,并分享一些優秀的實踐。
1、基于 CloudRTC 的云渲染平臺傳輸架構
首先是產品架構,云渲染平臺傳輸架構與傳統 RTC 架構類似,包括推流端、拉流端、云端轉發三大部分,不同點在于邊緣云與媒體轉發服務在同一個機房或同一個網源點上。
推流端主要部署云渲染應用,邊緣計算集群、虛擬化后的 GPU 集群都在這部分。
云端服務包括三部分:
第一部分是信令加速服務,負責用戶接入、流量調度、用戶管理、房間管理等。
第二部分是媒體轉發服務,與傳統 RTC 有一點區別,會根據云渲染應用提供 SFU/PTP 架構,同時提供轉發和點對點直連。媒體轉發服務負責云渲染平臺的兩種數據流,第一種是媒體流,也就是音視頻流,第二種是控制流,即用戶對云渲染平臺反向的交互控制指令。
第三部分是拉流播放服務。拉流播放實現了更多端側設備適配,如 IOT 設備、頭顯設備、手表、鼠鍵盤、手柄及平板、手機、電腦等設備。
接下來對調整后的云渲染全鏈路串流方案傳輸架構進行整體介紹。如上圖所示,從架構上分為三大模塊:
① 云化平臺:渲染應用的核心模塊。
② 流化模塊:包括采集編碼、網絡傳輸、解碼、反向指令傳輸等等。
③ 終端顯示:包括指令采集等等。
整體流程如上圖所示,過程中有個技術點需要重點介紹,在整個流程中我們將指令采集和音視頻流放在同一網源,即同一個傳輸協議,將指令采集通過信令方式傳輸,通過將指令發送與音視頻通過同一通道傳輸,可以對時延有較好的控制,方案已經在新一代的 OPPO 云渲染平臺上線。
三、低延時串流技術探索
這一章節中將介紹對低延時技術的探索與實踐,特別是 RTC、串流等技術。
1、云渲染串流時延優化
通過分解將整體時延優化分為三個部分:
① 采集編碼優化。
② 傳輸優化。
③ 接收端優化。
2、采集編碼優化
采集編碼優化主要有兩部分工作:
(1)GPU 編碼方案
GPU 編碼方案的調整包括渲染畫面顯示后,通過屏幕或窗口采集,送到編碼模塊進行編碼;另外,引入 GPU 的優勢,通過在 GPU 進行渲染和編碼,引入零拷貝編碼方案。
零拷貝編碼方案:通過云渲染引擎設置鉤子函數,當渲染畫面出來之后通過鉤子函數將 frame buffer 里面的數據整理,將 frame buffer 里的數據拷貝到共享紋理 share texture 中,通過共享紋理圖像使用 GPU 進行編碼,可以避免 GPU 和 CPU 之間原始數據拷貝,通過在 GPU 內部完成視頻采集處理和編碼,大大縮短效率,降低 CPU 消耗,編碼模塊將數據送到云串流引擎上通過網絡發送,同時在時延上有一些收益。
(2)低延時編碼方案
① 自適應編碼:結合傳輸和控制,根據網絡質量和傳輸質量進行自適應編碼及碼率調整。
② 前向糾錯技術:結合糾錯技術對網絡丟包進行動態冗余編碼,進行信源編碼交錯。
③ ROI 編碼:通過 ROI 區域感興趣編碼,降低一些編碼碼率,增強畫質,從而實現低碼高清的。
④ 分層編碼:分層包含 SVC 編碼以及一些 Cmucas 的編碼來實現抗弱網以及在弱網情況下的重傳壓力。
⑤ LTR 編碼:通過 LTR 查詢參考幀的編碼引入,在編碼方案上會做低延時的更多選擇性。
3、傳輸優化 -基于 GCC 的優化方案
再來看一下傳輸層的優化內容。
(1)擁塞控制優化方案:OPPO 的 RTC 基于 WebRTC 演進,控制算法是基于 GCC 的優化方案,在低時延的預算情況下,媒體傳輸在發生網絡擁塞時降低一些碼率,避免發生更嚴重的網絡擁塞,減少丟包重傳及時延上升。
① 帶寬評估
1)調節基于延遲和丟包預測模型的加權參數,提高網絡敏感環境抗性。
2)在探測過程中,采用快速收斂策略,優化帶寬估計反饋周期 feedback。
② Pacing 流控發送
1)在網絡良好時,調整流控超發參數,提高單次數據發送量,降低單幀發送時延。
2)采用 Pace+Probe 方案,更加主動的探測網絡帶寬,提高帶寬利用率。
4、傳輸優化 -流暢性優先的 QoS 策略
接下來介紹傳輸算法中重要的內容——QoS 策略。
QoS 策略如圖所示,如何在編碼發送接收過程中,發現丟幀,恢復,通過不同手段解決丟幀問題,對 QoS 進行優化,保證流暢性。QoS 流暢性優先優化策略包括:
(1)HARQ 動態冗余策略
優化重傳和 FEC 技術,通過前置冗余的方案,在丟包之前配備一定冗余,以局部帶寬為代價,降低重傳時延。
(2)不對等保護
依據不同信源做不同保護策略,在弱網場景,配合 SVC 分層編碼,采用主動丟幀和減少 P 幀重傳策略,降低傳輸帶寬,緩解網絡擁塞。
通過流暢性優先的 QoS 策略,可以在時延及帶寬上取得更好的平衡。
5、接收端優化--零緩存播放
下面介紹接收端的優化。在音視頻發送到客戶端播放之前經歷三個階段:抗抖動、解碼時延、渲染時延;最后到接收端時延。
接收端時延優化策略有:
(1)調整 Jitterbuffer 算法
采取“來一幀,出一幀”思路,重構低延時 Jitter 評估方案,同時弱化幀間差異帶來的抖動,控制 buffer 緩存,更快更及時地輸出給解碼器解碼。
(2)低延時解碼
在硬件比較差的設備,采用軟硬結合的解碼方案,基于端側設備選擇解碼類型,以達到高效率低延遲的目標。
6、時延測試數據及應用效果
上圖中展示了優化后的時延實驗測試數據。
左邊圖片是基于 RTC 場景的測試數據,時延在 180ms 左右,整體網絡模擬延時是50ms;優化后的低時延測試數據在 100ms 左右,通過邊緣節點可以進一步降低網絡時延。
右邊圖片是 OPPO 的 3D 虛擬數據中心,基于優化后的 RTC 技術,整體時延及體驗得到了提升。
四、總結與展望
最后介紹一下對低時延應用的展望。
現有串流技術,達到了百毫秒級別,但仍需要進一步優化時延,實現更高標準的“延時自由”,未來展望主要有三點:
(1)內容生產端:通過生產的傳輸端優化,比如,云端應用與推流更緊密的聯合,實現“生產端+傳輸”更加閉環。
(2)云端:通過云端更低成本的基礎設施,結合邊緣節點,實現全局一張網,降低接入成本和時延。
(3)用戶端:用戶端的 SDK 除了實現播放,通過策略在部分端側進行端側渲染,以及 RTC 和指令控制的結合,達到更佳的用戶體驗。