- WebRTC音視頻實時互動技術:原理、實戰與源碼分析
- 李超編著
- 1016字
- 2021-08-06 14:49:30
2.2 WebRTC客戶端架構
實際上,2.1節所講的所有功能WebRTC都已經實現了。下面讓我們看一下WebRTC架構圖,如圖2.5所示。

圖2.5 WebRTC架構圖
從WebRTC架構圖中可以了解到,它大體上可以分成四層:接口層、Session層、核心引擎層和設備層。下面簡要介紹一下每一層的作用。
接口層包括兩部分:一是Web層接口;二是Native層接口。也就是說,你既可以使用瀏覽器開發音視頻直播客戶端,也可以使用Native(C++、Android、OC等)開發音視頻直播客戶端。基于瀏覽器開發音視頻直播客戶端的知識將在第5章中詳細介紹;而關于Native開發的內容則分別在第8章和第12章中詳細介紹。
Session層的主要作用是控制業務邏輯,如媒體協商、收集Candidate等,這些操作都是在Session層處理的;這些內容在第5章以及第6章中進行詳細講解。
核心引擎層包括的內容比較多。從大的方面說,它包括音頻引擎、視頻引擎和網絡傳輸層。音頻引擎層包括NetEQ、音頻編解碼器(如Opus、iLBC)、3A等;視頻引擎包括JitterBufer、視頻編解碼器(VP8、VP9、H264)等;網絡傳輸層包括SRTP、網絡I/O多路復用、P2P等。以上這些內容中,本書重點介紹了網絡相關的內容,它們分布在第3章、第6章、第9章、第10章等幾章中。限于篇幅,其他內容我會陸續發布在我的個人主站上。
設備層主要與硬件打交道,它涉及的內容包括:在各終端設備上進行音頻的采集與播放,視頻的采集,以及網絡層等。這部分內容會在本書的最后一章詳細介紹。
從上面的描述中可以看到,在WebRTC架構的四層中,最復雜、最核心的是第三層,即引擎層,因此在這里再對引擎層內部的關系做簡要介紹。引擎層包括三部分內容,分別是音頻引擎、視頻引擎以及網絡傳輸。其中音視引擎和視頻引擎是相對比較獨立的,但它們都需要與網絡傳輸層(transport)打交道。也就是說,它們都需要將自己產生的數據通過網絡傳輸層發送出去;同時,也需要通過網絡傳輸層接收其他端發過來的數據。此外,音頻引擎與視頻引擎由于要進行音視頻同步,所以它們之間也存在著關聯關系。
最后,我們再次以音頻為例,看一下WebRTC中的數據流是如何流轉的(見圖2.6)。一方面,當WebRTC作為發送端時,它通過音頻設備采集到音頻數據后,先要進行3A處理,處理后的數據交由音頻編碼器編碼,編碼后由網絡傳輸層將數據發送出去;另一方面,當網絡傳輸層收到數據后,它要判斷數據的類型是什么,如果是音頻,它會將數據交給音頻引擎模塊處理,數據首先被放入NetEQ模塊做平滑處理及音頻補償處理,之后進行音頻解碼,最終將解碼后的數據通過揚聲器播放出來。視頻的處理流程與音頻的處理流程是類似的。

圖2.6 音頻數據流圖
[1] 作者個人主站地址:https://avdancedu.com。
- Easy Web Development with WaveMaker
- 程序員修煉之道:通向務實的最高境界(第2版)
- INSTANT Adobe Edge Inspect Starter
- Python程序設計與算法基礎教程(第2版)(微課版)
- Everyday Data Structures
- Photoshop CC移動UI設計案例教程(全彩慕課版·第2版)
- Android嵌入式系統程序開發(基于Cortex-A8)
- WCF全面解析
- 樹莓派開發從零開始學:超好玩的智能小硬件制作書
- PhoneGap 3.x Mobile Application Development Hotshot
- Building an E-Commerce Application with MEAN
- Python 3.8編程快速入門
- IBM Cognos TM1 Cookbook
- C語言從入門到精通(第4版)
- Python服務端測試開發實戰