- WebRTC音視頻實時互動技術:原理、實戰與源碼分析
- 李超編著
- 762字
- 2021-08-06 14:49:32
3.2.4 提高網絡質量
接下來,我們來看一下如何提高網絡質量。提高網絡質量是有默認前提條件的,即網絡沒有發生擁塞時才能提高網絡質量,否則提高網絡質量無從談起。關于網絡防止擁塞的內容,將在第10章中詳細介紹。
在網絡上,有哪些問題會對網絡質量產生影響呢?其實就是三點:丟包、延遲、抖動。下面詳細介紹一下這三種情況:
·丟包,是網絡傳輸過程中網絡質量好壞的最重要標志,對網絡的影響是最大的。優質的網絡丟包率不超過2%。對于WebRTC而言,大于2%且小于10%的丟包率是正常的網絡。
·延遲,也是網絡質量的重要指標,但與丟包相比,其對網絡的影響要少一些。如果在兩端之間數據傳輸的延遲持續增大,說明網絡線路很可能發生了擁塞。
·抖動,對網絡質量的影響是最小的。一般情況下,網絡都會發生一些抖動,如果抖動很小的話,可以通過循環隊列將其消除;如果抖動過大,則將亂序包當作丟包處理。在WebRTC中,抖動時長不能超過10ms,也就是說,如果有包亂序了,最多等待該亂序包10ms,超過10ms就認為該包丟了(即使在第11ms時,亂序的包來了,也仍然認為它丟失了)。
下面我們來看一下有哪些方法可以解決上述問題(丟包、延遲、抖動)。這里總結了5種方法,分別是NACK/RTX、FEC前向糾錯、JitterBufer防抖動、NetEQ、擁塞控制。
·NACK/RTX,NACK是RTCP中的一種消息類型,由接收端向發送端報告一段時間內有哪些包丟失了;RTX是指發送端重傳丟失包,并使用新的SSRC(將傳輸的音視頻包與重傳包進行區分)。
·FEC前向糾錯,使用異或操作傳輸數據,以便在丟包時可以通過這種機制恢復丟失的包。FEC特別適合隨機少量丟包的場景。
·JitterBufer,用于防抖動,可以將抖動較小的亂序包恢復成有序包。
·NetEQ,專用于音頻控制,里面包括了JitterBufer。除此之外,它還可以利用音頻的變速不變調機制將積攢的音頻數據快速播放或將不足的音頻拉長播放,以實現音頻的防抖動。
·擁塞控制,這部分內容很豐富,將在第10章中詳細介紹。
- 從零開始構建企業級RAG系統
- Visual C++串口通信開發入門與編程實踐
- 算法基礎:打開程序設計之門
- Animate CC二維動畫設計與制作(微課版)
- Learn React with TypeScript 3
- Android開發案例教程與項目實戰(在線實驗+在線自測)
- Scala Reactive Programming
- ServiceNow:Building Powerful Workflows
- Android移動開發案例教程:基于Android Studio開發環境
- Unity 3D/2D移動開發實戰教程
- CRYENGINE Game Development Blueprints
- OpenCV with Python Blueprints
- INSTANT Apache ServiceMix How-to
- Java自然語言處理(原書第2版)
- 征服C指針(第2版)