WebRTC 架構(gòu)分為三層:
信令層 (Signaling Layer)
負(fù)責(zé)建立和維護(hù)通信連接塌西,包括 SDP他挎、ICE 信息的交換。
典型實(shí)現(xiàn):WebSocket捡需、SIP办桨、XMPP 等(WebRTC 不定義信令協(xié)議,開發(fā)者需自行實(shí)現(xiàn))站辉。
媒體傳輸層 (Media Transport Layer)
用于音視頻數(shù)據(jù)的采集呢撞、編碼、傳輸和解碼饰剥。
涉及 RTP殊霞、RTCP、SRTP汰蓉、DTLS 等協(xié)議绷蹲。
數(shù)據(jù)傳輸層 (Data Transport Layer)
提供可靠的點(diǎn)對點(diǎn)數(shù)據(jù)傳輸。
依賴 SCTP顾孽、UDP祝钢、DTLS,支持文件共享若厚、游戲同步等應(yīng)用場景拦英。
詳細(xì)模塊解析
1. 信令層
信令層不屬于 WebRTC 的標(biāo)準(zhǔn)部分,但對于建立 WebRTC 會話至關(guān)重要测秸。信令的主要任務(wù)包括:
SDP 協(xié)商:通過 Offer/Answer 模型交換音視頻編解碼器信息疤估、帶寬約束等。
ICE 信息交換:傳遞候選地址(candidate)霎冯,實(shí)現(xiàn)點(diǎn)對點(diǎn)連接铃拇。
典型流程:
WebSocket 等信令通道用于傳遞以下內(nèi)容:
SDP Offer / Answer
ICE Candidate
2. 媒體傳輸層
2.1 媒體采集與處理
音頻采集與處理:使用設(shè)備麥克風(fēng),通過 AudioTrack 采集音頻流肃晚,支持回聲消除锚贱、噪聲抑制。
視頻采集與處理:通過 VideoTrack 使用攝像頭采集視頻关串,支持分辨率調(diào)整和幀率控制拧廊。
2.2 媒體編碼與封裝
音頻編碼:常見編解碼器包括 Opus。
視頻編碼:支持 VP8晋修、VP9吧碾、H.264、AV1墓卦。
RTP 封裝:音視頻數(shù)據(jù)通過 RTP 封裝成數(shù)據(jù)包倦春,進(jìn)行網(wǎng)絡(luò)傳輸。
2.3 傳輸協(xié)議
RTP/RTCP:音視頻的實(shí)時傳輸協(xié)議,RTCP 提供統(tǒng)計和控制功能睁本。
SRTP:RTP 的安全版本尿庐,提供加密和完整性校驗(yàn)。
DTLS:提供數(shù)據(jù)傳輸?shù)募用堋?/p>
2.4 丟包與質(zhì)量控制
NACK:通過 RTCP 請求重傳丟失的數(shù)據(jù)包呢堰。
FEC:前向糾錯抄瑟,利用冗余數(shù)據(jù)恢復(fù)丟失的包。
BWE:帶寬估算枉疼,動態(tài)調(diào)整視頻碼率皮假。
3. 數(shù)據(jù)傳輸層
WebRTC 提供了基于 SCTP 的數(shù)據(jù)通道,支持點(diǎn)對點(diǎn)傳輸任意數(shù)據(jù):
可靠傳輸:確保數(shù)據(jù)按序到達(dá)骂维。
無序傳輸:優(yōu)化延遲敏感場景(如游戲)傅事。
加密傳輸:通過 DTLS 提供加密咒彤。
4. 網(wǎng)絡(luò)穿透技術(shù)
為了實(shí)現(xiàn)點(diǎn)對點(diǎn)連接,WebRTC 使用以下技術(shù):
STUN:幫助設(shè)備獲取公網(wǎng) IP 和端口旨涝。
TURN:當(dāng)點(diǎn)對點(diǎn)直連失敗時粪糙,通過中繼服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)凛膏。
ICE:動態(tài)選擇最佳通信路徑冠绢,包括直連和 TURN囤躁。
WebRTC 的典型通信流程
建立 PeerConnection
創(chuàng)建 RTC PeerConnection 對象,用于管理連接福铅。
媒體與數(shù)據(jù)流設(shè)置
調(diào)用 getUserMedia() 獲取音視頻流,或設(shè)置數(shù)據(jù)通道项阴。
交換 SDP
使用信令通道交換 SDP Offer/Answer滑黔。
ICE 連接建立
通過 STUN/TURN 獲取候選地址并進(jìn)行連接測試。
媒體與數(shù)據(jù)傳輸
音視頻通過 RTP/RTCP 傳輸环揽,數(shù)據(jù)通過 SCTP 傳輸略荡。
通過上述架構(gòu)和流程,WebRTC 實(shí)現(xiàn)了高效的實(shí)時通信能力歉胶,廣泛應(yīng)用于視頻通話汛兜、在線會議、實(shí)時直播和多人游戲等領(lǐng)域通今。