在使用 WebRTC 進行多伺服器對話時,原生的 WebRTC 統計資訊僅提供第一跳(即從客戶端到第一個伺服器)的延遲數據。這種統計資訊無法全面反映實際延遲情況。為了獲得更準確的端到端延遲測量,需要考慮以下幾個方面:
- 從第一個客戶端到第一個伺服器的延遲。
- 每個伺服器之間的延遲。
- 從最後一個伺服器到目標客戶端的延遲。
這樣可以更全面地了解整個通信鏈路的延遲情況。
測量端到端延遲要困難得多,因為它不是由 WebRTC 堆疊自動提供的。
要測量整個延遲(包括捕獲和渲染端引入的延遲),可以在計算中包含 WebRTC getStats API 提供的一些附加指標,例如:
- jitterBufferDelay:抖動緩衝區的延遲。
- playoutDelay:播放延遲。
- packetSendDelay:數據包發送延遲。
這些指標能夠幫助更全面地評估從捕獲到最終渲染的整個延遲鏈路。
有的場景中前置媒體處理部分也會帶來額外延遲,比如:
- 美顏、濾鏡:採集視頻後美化畫面,增加特效,需要額外的計算,增加處理時間,常用於直播場景
- 虛擬背景:採集畫面後對畫面進行虛化背景,常用於視頻會議場景
- 合流融屏:將多個採集畫面進行拼接,合流為單幅畫面,也會一定程度上造成延遲
- AI 和 CV 處理:人臉識別、姿態識別、物體識別等計算機視覺算法會顯著增加延遲。
- 音頻相關:回聲消除、噪聲抑制等處理也會帶來一定的音頻延遲
除了上述的延遲外,可能還需要考慮執行捕獲和渲染的軟體也會帶來延遲。
在大多數情況下,測量的是往返時間(RTT),然後將其除以二以作為單向延遲的良好估計。這個方法在實際應用中常用於估算從一個點到另一個點的延遲。
捕獲延遲(Capture Delay):
從輸入設備(如攝像頭或麥克風)捕獲數據開始,到數據被傳輸到應用程序的時間。
編碼延遲(Encoding Delay):
數據被編碼成壓縮格式的時間。這包括視頻或音頻流的編碼過程。
傳輸延遲(Transmission Delay):
數據從發送端到接收端的傳輸時間。這包括網絡傳輸時間以及中間伺服器的處理時間。
抖動緩衝區延遲(Jitter Buffer Delay):
在接收端,抖動緩衝區用於平滑網絡抖動引起的延遲變化,其所引入的延遲時間。
播放延遲(Playout Delay):
從接收端接收到數據到開始播放的時間。這包括接收和解碼過程中的延遲。
解碼延遲(Decoding Delay):
數據從編碼格式解碼為可播放格式的時間。
渲染延遲(Rendering Delay):
從解碼到數據實際被渲染或顯示的時間。這包括螢幕刷新和圖像渲染的時間。
往返時間(Round-Trip Time, RTT):
從發送端發送數據到接收端接收,並且從接收端返回到發送端的總時間。通常用於估算單向延遲的一半。
針對這些因素,提出一系列相關優化措施如下:
1. 分佈式服務部署#
目標:優化全球伺服器佈局,減少網絡延遲,提高服務可用性和性能
- 就近接入和分發:在全球範圍內部署區域伺服器,減少跨國連接帶來的延遲
- 減少服務間路由跳數
- 選擇最佳伺服器路徑
- 實現負載均衡:合理分配用戶請求,避免單點伺服器壓力過大
2. 網絡層面優化#
目標:提高網絡傳輸質量和效率
- 動態監測鏈路質量
- 識別並規避低質量鏈路
- 優化接入服務
3. 應用層面優化#
目標:提高應用程序處理效率,減少延遲
3.1 性能優化#
- 減少數據拷貝
- 減少不必要的計算和處理時間
- 使用匯編或多媒體匯編指令提高數據串行並發處理能力
3.2 抖動緩衝區優化#
目標:平衡網絡抖動和播放流暢度
- 動態調整抖動緩衝區大小:根據當前網絡抖動情況調整,減少網絡波動引起的延遲
- 最小化緩衝時間:在保證流暢播放的前提下,儘量縮短抖動緩衝時間
4. 媒體處理優化#
目標:提高媒體處理效率,適應不同網絡環境
- 硬體加速:使用 GPU、FPGA 或專用硬體加速器(硬編解碼)進行媒體編解碼和處理,減少 CPU 負擔
- 自適應比特率:根據網絡條件動態調整視頻質量(解析度 / 幀率)和比特率
- 智能編碼:使用更高效的編碼算法(ROI 編碼)或編碼器,如 AV1、VP9 或 H.265,在保證質量的同時減少數據量
5. 傳輸優化#
目標:提高數據傳輸效率和安全性
- SRTP 加密優化:使用更高效的加密算法或優化加密實現,減少加解密引入的延遲
- 減少打包大小:適當減少數據包大小,降低網絡傳輸中的延遲
6. P2P 優化#
目標:減少伺服器負擔,提高點對點通信效率
- 直連路徑:儘量採用 P2P(點對點)連接,避免經過伺服器中轉
- ICE 候選優選:在 ICE 候選協商中優先選擇延遲最低的路徑
7. 用戶體驗優化#
目標:提高用戶滿意度,減少感知延遲
- 延遲隱藏技術:實施各種延遲隱藏技術,如插值、預測等,改善用戶體驗
- 優化 UI/UX:設計響應迅速的用戶界面,減少感知延遲
- 網絡接入:儘量使用有線網絡,相對 WIFI 和 4/5G 有更高的穩定性
8. 網絡安全優化#
目標:在保證安全的同時最小化性能影響
- 優化防火牆規則:確保安全措施不會過度影響網絡性能
- 使用高效的加密算法:選擇能夠快速加解密的算法,減少安全處理帶來的延遲