低延時音影片技術在OPPO雲渲染場景的應用

陶然陶然發表於2023-04-07

   01 雲渲染場景的傳輸需求及挑戰

  首先介紹一下雲渲染業務對音影片的一些傳輸要求,以及面臨的挑戰。

  1. 雲渲染場景應用  

  隨著網際網路技術的發展,音影片應用經歷了三個階段:

  第一個階段主要為 2008~2013 年,也就是 3G 時代,以長影片為主,以 PDN 點播、 VOD 點播為核心技術。

  第二個階段從 2013~2019 年,進入 4G 時代,誕生了很多音影片的產品,比如播直播、短影片,音影片技術。

  第三個階段從 2019~ 至今,進入了 5G 時代,隨著 5G 和雲基礎設施的發展,給音影片技術帶來了更多施展空間,音影片技術進入繁榮時期,這一時期的應用和技術主要有云會議、互動直播、遠端協作、XR、雲遊戲、自由視角等等。

  什麼是雲渲染,簡而言之,雲渲染是利用雲端算力來解決終端算力瓶頸問題,進而解放端側算力壓力,主要的場景有虛擬社交,虛擬演播廳、虛擬演唱會、雲遊戲、遠端協作等。

  雲渲染平臺藉助雲端算力和音影片技術將引領下一代多媒體互聯發展。

  2. 雲渲染平臺架構  

  雲渲染平臺主要有兩大部分,第一部分是雲端渲染平臺,第二部分是跨終端平臺,兩個部分中間透過串流技術依託網路傳輸進行連結。基本原理是把 3D 應用渲染在雲端執行,透過接收終端的控制指令渲染相應音影片畫面,再透過流化技術由網路推給終端使用者進行體驗。

  串流是雲渲染業務使用者體驗的核心點,雲渲染將本地應用的算力移到雲端,但需要與本地應用有相同的體驗,從體驗角度來講,雲渲染對流化傳輸有兩個需求:

  ① 如何實現沉浸式超高畫質體驗:相比以前的音影片,比如雲會議、線上課堂,雲渲染需要實現高畫質體驗;以前 1080P、720P 解析度,1~2M 的頻寬基本滿足,但現在的影片畫面更高畫質,比如 4K、8K 畫質,音影片傳輸負載變更大,從原來的 1M 級變成 10M 級,自由視角的場景甚至到 100M 級。

  ② 如何實現實時互動:零延時是相對概念,使用者無感知延時就叫零延時,目前百毫秒延時能夠給使用者提供較好的體驗,百毫秒延時成為未來的趨勢。

   02 RTC 和雲渲染業務的結合

  本章節將介紹 OPPO 在雲渲染場景與 RTC 的結合,傳輸架構所做的調整,並分享一些優秀的實踐。

  1. 基於 CloudRTC 的雲渲染平臺傳輸架構  

  首先是產品架構,雲渲染平臺傳輸架構與傳統 RTC 架構類似,包括推流端、拉流端、雲端轉發三大部分,不同點在於邊緣雲與媒體轉發服務在同一個機房或同一個網源點上。

  推流端主要部署雲渲染應用,邊緣計算叢集、虛擬化後的 GPU 叢集都在這部分。

  雲端服務包括三部分:

  第一部分是信令加速服務,負責使用者接入、流量排程、使用者管理、房間管理等。

  第二部分是媒體轉發服務,與傳統 RTC 有一點區別,會根據雲渲染應用提供 SFU/PTP 架構,同時提供轉發和點對點直連。媒體轉發服務負責雲渲染平臺的兩種資料流,第一種是媒體流,也就是音影片流,第二種是控制流,即使用者對雲渲染平臺反向的互動控制指令。

  第三部分是拉流播放服務。拉流播放實現了更多端側裝置適配,如 IOT 裝置、頭顯裝置、手錶、鼠鍵盤、手柄及平板、手機、電腦等裝置。  

  接下來對調整後的雲渲染全鏈路串流方案傳輸架構進行整體介紹。如上圖所示,從架構上分為三大模組:

  ① 雲化平臺:渲染應用的核心模組。

  ② 流化模組:包括採集編碼、網路傳輸、解碼、反向指令傳輸等等。

  ③ 終端顯示:包括指令採集等等。

  整體流程如上圖所示,過程中有個技術點需要重點介紹,在整個流程中我們將指令採集和音影片流放在同一網源,即同一個傳輸協議,將指令採集透過信令方式傳輸,透過將指令傳送與音影片透過同一通道傳輸,可以對時延有較好的控制,方案已經在新一代的 OPPO 雲渲染平臺上線。

   03 低延時串流技術探索

  這一章節中將介紹對低延時技術的探索與實踐,特別是 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 技術,整體時延及體驗得到了提升。

   04 總結與展望

  最後介紹一下對低時延應用的展望。  

  現有串流技術,達到了百毫秒級別,但仍需要進一步最佳化時延,實現更高標準的“延時自由”,未來展望主要有三點:

  (1)內容生產端:透過生產的傳輸端最佳化,比如,雲端應用與推流更緊密的聯合,實現“生產端+傳輸”更加閉環。

  (2)雲端:透過雲端更低成本的基礎設施,結合邊緣節點,實現全域性一張網,降低接入成本和時延。

  (3)使用者端:使用者端的 SDK 除了實現播放,透過策略在部分端側進行端側渲染,以及 RTC 和指令控制的結合,達到更佳的使用者體驗。

來自 “ DataFunTalk ”, 原文作者:邵高傑;原文連結:http://server.it168.com/a2023/0407/6797/000006797958.shtml,如有侵權,請聯絡管理員刪除。

相關文章