WebRTC入門(二)---- 架構

WebRTC總體結構

在WebRTC官網上的WebRTC架構圖清晰的說明了其總體的架構和設計思路。瀏覽器

能夠看到,這張圖被分爲了紫色和綠色兩大部分。
其中紫色部分爲瀏覽器提供的JavaScript Api,紫色箭頭爲上層應用。
綠色部分爲WebRTC的核心部分,是封裝好的WebRTC庫。

WebRTC架構圖

WebRTC核心層(綠色部分)

WebRTC核心層,分爲了四個層級

C++ Api層

經過觀察源碼能夠看到,Api層主要提供了PeerConnection功能,其中包括傳輸質量、數據、流等。此外本層還提供了音視頻採集、非音視頻傳輸、設備管理的接口等。網絡

能夠看到,WebRTC對外暴露的接口很是少,極大的下降了使用的難度

image.png

Session層

在建立了音頻、視頻,或進行數據傳輸時,須要在Session層處理。架構

Session層有相關的處理邏輯。

image.png

核心層

在覈心層,包含了音頻引擎(Voice Engine)、視頻引擎(Video Engine)和傳輸(Transport)ide

能夠看到,核心層的音頻、視頻、傳輸引擎相互獨立。

音頻引擎

編解碼模塊(iSAC/iLBC),可將Opus和aac加入到模塊中。
緩衝模塊(NetEQ)是音頻緩衝的Buffer,用於網絡防抖。
迴音消除與降噪(Echo Canceler/Noise Reduction)。
image.pngspa

視頻引擎

目前支持了H26四、OpenH264,對於XH264可添加對應模塊.
視頻Buffer,用於網絡防抖。
視頻、圖像加強模塊會有對應的接口,能夠本身實現美顏、人臉識別等功能。
image.png設計

傳輸引擎

底層使用UDP,上層使用RTP。
多流複用通道。
P2P協議。
image.pngcode

硬件相關層

包含了音頻的採集與渲染、視頻的採集(沒有渲染),網絡i/o視頻

在WebRTC的內核中並不包含視頻的渲染
視頻的渲染都是在應用層或瀏覽器層完成

image.png
在本層中,全部模塊(畫虛線部分)均可以進行重載,能夠經過本身編寫方法來代替。blog

相關文章
相關標籤/搜索