什么是jitter
設計背景
jitter(也稱為等待時間或延遲)是數據包從一個點到達另一個點所花費的時間。
JitterBuffer 是用于捕獲傳入數據包的臨時存儲緩沖區。
它用于基于數據包的網絡中,通過在網絡擁塞期間使數據包到達時間變平滑來確保音頻流的連續性。 數據包獨立傳輸,到達時間會因網絡擁塞和所用網絡的類型(即LAN與無線網絡)的不同而有很大差異。
在這個前提下,jitter buffer的設計要求也就出來的:
- 刪除重復的數據包。
- 如果數據包亂序到達,要對其重新排序。
- 在丟包(錯誤隱藏)的情況下修復流。
- 根據當前網絡擁塞動態管理延遲。
- 管理前向糾錯(FEC)。
webrtc下的 jitter buffer
因為這一設計會影響嚴重影響用戶體驗,所以這里重點研究下webrtc中對這部分的處理。
webrtc 的 jitterbuffer 可以分為 jitter 和 buffer 。
buffer 主要對丟包、亂序、延時到達等異常情況做處理,還會和NACK、FEC、FIR等QOS相互配合。
jitter 主要根據當前幀的大小和延時評估出jitter delay,再結合decode delay、render delay以及音視頻同步延時,得到render time,來控制平穩的渲染視頻幀。
參考資料:
總結
- 上一篇: 【Top 30+案例评选】CSDN“20
- 下一篇: 朱西产:智能网联汽车与未来出行变革