- WebRTC音視頻實時互動技術:原理、實戰與源碼分析
- 李超編著
- 591字
- 2021-08-06 14:49:30
2.1.4 其他
除了上面介紹的幾點外,要實現一個功能強大、性能優越、應用廣泛的音視頻直播客戶端還有很多工作要做。通常讀者比較關心以下問題:
·音視頻不同步。音視頻數據經網絡傳輸后,由于網絡抖動和延遲等問題,很可能造成音視頻不同步。對此,可在音視頻直播客戶端增加音視頻同步模塊以保障音視頻的同步。
·回音。指的是與其他人進行實時互動時可以聽到自己的回聲。在實時音視頻通信中,不光有回音問題,還有噪聲、聲音過小等問題,我們將它們統稱為3A問題。這些問題都是非常棘手的。目前開源的項目中,只有WebRTC和Speex有開源的回音消除算法,而且WebRTC的回音消除算法是非常先進的。
·音視頻的實時性。要進行實時通信,網絡質量尤為關鍵。但網絡的物理層是很難保障網絡服務質量的,必須在軟件層加以控制才行。雖然常用的TCP有一套完整的保障網絡質量的方案,但它在實時性方面表現不佳。換句話說,TCP是以犧牲實時性來保障網絡服務質量的,而實時性又是音視頻實時通信的命脈,這就導致TCP不能作為音視頻實時傳輸的最佳選擇了。因此,為了保證實時性,一般情況下實時直播應該首選UDP。但這樣一來,我們就必須自己編寫網絡控制算法以保證網絡質量。
此外,還有網絡擁塞、丟包、延時、抖動、混音等問題。
通過上面的描述,讀者應該清楚要自己研發一套音視頻直播客戶端到底有多難了。
[1] 3A是指:Acoustic Echo Cancelling(AEC),即回音消除;Automatic Gain Control(AGC),即自動增益;Active Noise Control(ANC,也稱為Noise Cancellation、Noise Suppression),即降噪。
推薦閱讀
- FuelPHP Application Development Blueprints
- Learning C# by Developing Games with Unity 2020
- 數據庫原理及應用(Access版)第3版
- Practical UX Design
- HoloLens Beginner's Guide
- VSTO開發入門教程
- Apache Spark Graph Processing
- Mastering KnockoutJS
- Drupal 8 Module Development
- Practical Game Design with Unity and Playmaker
- Microsoft 365 Certified Fundamentals MS-900 Exam Guide
- 小型編譯器設計實踐
- RocketMQ實戰與原理解析
- PHP項目開發全程實錄(第4版)
- Go Systems Programming