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