webRTC介紹與運行機制

webRTC是 Google在2011年開源的跨平臺的音視頻引擎,可用於瀏覽器,提供簡單的javascript就可以達到實時通訊。提供了視頻會議的核心技術,包括音視頻的採集、編解碼、網絡傳輸、顯示等功能,並且還支持跨平臺:windows,linux,mac,android。

可應用於遊戲、即時通訊、文件傳輸等領域,對音視頻處理有完整的解決方案,如迴音消除、降噪等。

目錄結構

webRTC整體架構

紫色區域爲應用層,爲web開發者接口API
綠色區域爲核心層,分爲四層
1)提供C++API(peerconection)
2)session層,上下文管理層,包括音視頻,非音視頻信息處理
3)音頻引擎:包括編解碼器、音頻緩衝buffer,用於適配、迴音消除、降噪,靜音檢測
視頻引擎:包括編解碼器,視頻緩衝buffer,圖像增強
傳輸:SRTP、RTCP、複用、P2P等
4)音頻採集、視頻採集、網絡IO,虛線代表可重載,可以自己實現模塊代替它

webRTC源碼目錄結構

目錄 功能
api WebRTC接口層,瀏覽器都是通過該接口調用webRTC
call 數據流等管理層、call代表同一斷點等所有數據的流入流出
video 與視頻相關的邏輯
audio 與音頻相關的邏輯
common_audio
common_video 視頻算法相關
media 與多媒體相關的邏輯,如編解碼的邏輯處理
logging 日誌相關
module 最重要的目錄,子模塊
pc peerconnection,連接相關的邏輯層
P2P 端對端相關代碼,stun,turn
rtc_base 基礎代碼,如線程、鎖相關的統一接口代碼
rtc_tool 音視頻分析相關的工具代碼
tool_webrtc webRTC測試相關的代碼,如網絡模擬器
system_wrappers 與具體操作系統相關的,如CPU特性,原子操作等
stats 存放各種數據統計相關的類
sdk 存放Android和IOS層代碼,如視頻採集,渲染等

webRTC modules目錄結構

目錄 功能
audio_coding 音視頻編輯嗎相關代碼
audio_device 音頻採集與音頻播放相關代碼
audio_mixer 混音相關代碼
audio_processing 音頻前後處理的相關代碼,如迴音消除,降噪等
bitrate_controller 碼率控制相關代碼
congestion_controller 流控相關代碼
desktop_capture 桌面採集相關的代碼
pacing 碼率探測及平滑處理相關的代碼
remote_bitrate_estimator 遠端碼率估算相關的代碼
rtp_rtcp rtp/rtcp協議相關代碼
video_capture 視頻採集相關的代碼
video_coding 視頻編輯嗎相關的代碼
video_processing 視頻前後處理相關的代碼

webRTC運行機制

1.Peerconnection調用過程的步驟

1)內部有兩個線程worker thread和signaling thread
2)創建工廠PeerConnectionFactoryInterface
3)創建音視頻軌
4)通過AddTrack創建音視頻流
5)通過AddStream創建PeerConnectionInterace
6)最後通過Observer輸出
Peerconnection調用過程

2.調用時序圖

在這裏插入圖片描述

1)應用層觸發creatPeerconnectionFactory創建工廠
2)通過CreatPeerConnection創建連接,創建流和視頻軌
3)通過Addstream添加到連接中
4)當流發生變化會觸發一個信息offer發送到信令
5)信令收到answer後傳給連接
6)連接拿到媒體信息建立通道
7)連接將遠端的流發送到APP中去

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章