在WebRTC官網上的WebRTC架構圖清晰的說明了其總體的架構和設計思路。瀏覽器
能夠看到,這張圖被分爲了紫色和綠色兩大部分。 其中紫色部分爲瀏覽器提供的JavaScript Api,紫色箭頭爲上層應用。 綠色部分爲WebRTC的核心部分,是封裝好的WebRTC庫。
WebRTC核心層,分爲了四個層級
經過觀察源碼能夠看到,Api層主要提供了PeerConnection功能,其中包括傳輸質量、數據、流等。此外本層還提供了音視頻採集、非音視頻傳輸、設備管理的接口等。網絡
能夠看到,WebRTC對外暴露的接口很是少,極大的下降了使用的難度
在建立了音頻、視頻,或進行數據傳輸時,須要在Session層處理。架構
Session層有相關的處理邏輯。
在覈心層,包含了音頻引擎(Voice Engine)、視頻引擎(Video Engine)和傳輸(Transport)ide
能夠看到,核心層的音頻、視頻、傳輸引擎相互獨立。
編解碼模塊(iSAC/iLBC),可將Opus和aac加入到模塊中。
緩衝模塊(NetEQ)是音頻緩衝的Buffer,用於網絡防抖。
迴音消除與降噪(Echo Canceler/Noise Reduction)。
spa
目前支持了H26四、OpenH264,對於XH264可添加對應模塊.
視頻Buffer,用於網絡防抖。
視頻、圖像加強模塊會有對應的接口,能夠本身實現美顏、人臉識別等功能。
設計
底層使用UDP,上層使用RTP。
多流複用通道。
P2P協議。
code
包含了音頻的採集與渲染、視頻的採集(沒有渲染),網絡i/o視頻
在WebRTC的內核中並不包含視頻的渲染 視頻的渲染都是在應用層或瀏覽器層完成
在本層中,全部模塊(畫虛線部分)均可以進行重載,能夠經過本身編寫方法來代替。blog