官术网_书友最值得收藏!

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章等幾章中。限于篇幅,其他內容我會陸續發布在我的個人主站 作者個人主站地址:https://avdancedu.com。上。

設備層主要與硬件打交道,它涉及的內容包括:在各終端設備上進行音頻的采集與播放,視頻的采集,以及網絡層等。這部分內容會在本書的最后一章詳細介紹。

從上面的描述中可以看到,在WebRTC架構的四層中,最復雜、最核心的是第三層,即引擎層,因此在這里再對引擎層內部的關系做簡要介紹。引擎層包括三部分內容,分別是音頻引擎、視頻引擎以及網絡傳輸。其中音視引擎和視頻引擎是相對比較獨立的,但它們都需要與網絡傳輸層(transport)打交道。也就是說,它們都需要將自己產生的數據通過網絡傳輸層發送出去;同時,也需要通過網絡傳輸層接收其他端發過來的數據。此外,音頻引擎與視頻引擎由于要進行音視頻同步,所以它們之間也存在著關聯關系。

最后,我們再次以音頻為例,看一下WebRTC中的數據流是如何流轉的(見圖2.6)。一方面,當WebRTC作為發送端時,它通過音頻設備采集到音頻數據后,先要進行3A處理,處理后的數據交由音頻編碼器編碼,編碼后由網絡傳輸層將數據發送出去;另一方面,當網絡傳輸層收到數據后,它要判斷數據的類型是什么,如果是音頻,它會將數據交給音頻引擎模塊處理,數據首先被放入NetEQ模塊做平滑處理及音頻補償處理,之后進行音頻解碼,最終將解碼后的數據通過揚聲器播放出來。視頻的處理流程與音頻的處理流程是類似的。

圖2.6 音頻數據流圖

[1] 作者個人主站地址:https://avdancedu.com。

主站蜘蛛池模板: 仁寿县| 沙雅县| 准格尔旗| 鹰潭市| 贵州省| 大丰市| 三穗县| 科技| 沁水县| 遂川县| 金乡县| 海南省| 锡林浩特市| 海晏县| 云安县| 四川省| 渝北区| 静海县| 呼伦贝尔市| 济宁市| 万全县| 会东县| 沅江市| 闽清县| 观塘区| 遂川县| 五指山市| 济阳县| 石景山区| 丹巴县| 明溪县| 岗巴县| 轮台县| 连城县| 安西县| 新干县| 蕲春县| 佛坪县| 江华| 肃宁县| 仪征市|