WebRTC的弱網(wǎng),網(wǎng)絡(luò)抖動(dòng),丟包,亂序

WebRTC jitterbuff 緩存機(jī)制

  1. webrtc在弱網(wǎng)環(huán)境下或者網(wǎng)絡(luò)不穩(wěn)定的情況會出現(xiàn)網(wǎng)絡(luò)抖動(dòng)導(dǎo)致數(shù)據(jù)傳輸問題,webrct加入了jitterbuff 進(jìn)行保證網(wǎng)絡(luò)質(zhì)量。

jitterbuff的工作原理

  • 數(shù)據(jù)緩存:接受端維護(hù)一個(gè)數(shù)據(jù)緩沖區(qū),將接受到的數(shù)據(jù)包暫停一段時(shí)間。
  • 抖動(dòng)補(bǔ)償:當(dāng)數(shù)據(jù)包到達(dá)后,jitterbuffer會根據(jù)網(wǎng)絡(luò)延遲和抖動(dòng)的歷史數(shù)據(jù)動(dòng)態(tài)調(diào)整緩沖區(qū)的大小,保證盡量的平滑輸出。在網(wǎng)絡(luò)抖動(dòng)比較打的情況下,會增加緩沖區(qū)的大小來保證正常播放,但是這樣會增加的延遲。
  1. FEC 是一種通過傳輸數(shù)據(jù)時(shí)添加冗余信息來進(jìn)行錯(cuò)誤糾正技術(shù)。它在發(fā)送數(shù)據(jù)信息的時(shí)候,會添加一些額外的冗余信息,這樣接收端就可以使用這些冗余信息進(jìn)行修復(fù)丟失或者損壞的數(shù)據(jù)包。

    FEC的流程

    • 編碼 :在發(fā)送端,添加冗余信息,這些冗余信息是根據(jù)卷積碼或者RS嗎進(jìn)行生產(chǎn)的。
    • 解碼和修復(fù):接受端使用FEC解碼器可以根據(jù)冗余信息進(jìn)行補(bǔ)充和修復(fù)丟失或者損壞的數(shù)據(jù)包。

    FEC的優(yōu)缺點(diǎn)

    • 優(yōu)點(diǎn):可以減少重傳的請求次數(shù),可以修復(fù)和找回一些丟失的包。
    • 缺點(diǎn):增加帶寬,添加了冗余信息會增加一定的帶寬,有限的糾錯(cuò)能力。

NACK

NACK是一種反饋機(jī)制,在數(shù)據(jù)傳輸過程中報(bào)告丟失的數(shù)據(jù)包,并請求重新發(fā)送。

  • 工作原理:接受端收到數(shù)據(jù)包,并檢測是否有數(shù)據(jù)包丟失或者損壞,就會發(fā)送NACK信息指明數(shù)據(jù)包的序列號,發(fā)送端收到nack信息后就查找緩存中是否有這個(gè)包的信息然后會進(jìn)行重傳 如果沒有就會進(jìn)行丟棄。
  • nack簡單有效,能及時(shí)回復(fù)丟失的數(shù)據(jù)包,減少對播放的影響,但是重傳要求次數(shù)過多增加網(wǎng)絡(luò)帶寬的消耗。webrtc中重傳會有一種策略是防止重傳次數(shù)過的,就是10ms間隔 將收集到的包進(jìn)行一次重傳。

總結(jié)

在WebRTC中,Jitter Buffer、FEC 和 NACK 是用于優(yōu)化實(shí)時(shí)流媒體傳輸質(zhì)量和穩(wěn)定性的關(guān)鍵技術(shù):
Jitter Buffer:通過緩存數(shù)據(jù)包來平滑延遲波動(dòng),降低抖動(dòng)影響,平衡延遲和穩(wěn)定性。
FEC:通過添加冗余數(shù)據(jù)進(jìn)行前向糾錯(cuò),以修復(fù)丟失或損壞的數(shù)據(jù),減少重傳需求。
NACK:通過報(bào)告丟失的數(shù)據(jù)包并請求重傳來恢復(fù)丟失的數(shù)據(jù),增加數(shù)據(jù)傳輸?shù)目煽啃浴?br> 這三種技術(shù)各自發(fā)揮作用,互補(bǔ)不足,共同提升WebRTC實(shí)時(shí)流媒體的傳輸質(zhì)量和穩(wěn)定性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容