WebRTC实时音视频技术基础:基本架构和协议栈
概述
本文主要介紹WebRTC的架構和協議棧。
最基本的三角形WebRTC架構
為了便于理解,我們來看一個最基本的三角形WebRTC架構(見下圖):
在這個架構中,移動電話用“瀏覽器M”表示,筆記本電腦用“瀏覽器L”表示,通過Web服務器將它們連接起來。要建立一個實時媒體通訊,兩臺設備需要了解彼此的媒體功能,通過交換呼叫信令控制協議實現。
諸如這樣的信令協議在WebRTC標準中并非事先規定,而是由開發者自行制定。在瀏覽器RTC會話的步驟如下:
?
- 首先,兩個瀏覽器都從Web服務器下載了WebRTC程序(HTML5/JavaScript);
- 其次,兩個瀏覽器通過Web服務器交換控制信令信息(使用嵌入式信令服務器),建立媒體功能功能互通。
- 最后,兩個瀏覽器直接建立RTC媒體的音頻、視頻和數據通道。
?
真正實用的基于P2P的WebRTC架構
WebRTC使用P2P媒體流,音頻、視頻和數據的連接直接通過瀏覽器實現。但是,瀏覽器卻隱藏在NAT(網絡地址翻譯)和防火墻的后面,這增加了建立P2P媒體會話的難度。這些流程和協議,如ICE或Trickle ICE,STUN和TURN,在建立P2P媒體流都是必不可少的。
如何使用STUN協議建立一個P2P RTC媒體(如圖5所示),簡化版的ICE流程如下:
?
- 1.兩個瀏覽器通過自己的公網IP地址,使用STUN協議信息和STUN服務器建立聯系;
- 2.兩個瀏覽器通過SDP提供/應答機制,使用呼叫控制信令消息交換它們已發現的公共IP地址(ICE候選);
- 3.兩個瀏覽器執行連接檢查(ICE沖孔),確保P2P可以連接;
- 4.建立連接后,RTC媒體會話和媒體交換就可以實現了。
- 5.但是,假如在一個高度限制的NAT或防火墻,這種直接的路徑將無法建立,只能到達TURN服務器。結果是媒體通過TURN服務器分程傳遞(如下圖所示)。
WebRTC的協議棧
由互聯網工程任務組(IETF)基于標準的可互操作的通信模型和協議棧詳細地定義了WebRTC技術(參見圖7),如下:
如前所述的信令棧,并非由WebRTC實現規定,而是由開發者自行決定。在這個例子中,我們將使用SIP-over-WebSocket(SIPoWS)作為信令棧。HTTP協議用于瀏覽器下載HTML5/JavaScript程序內容;NAT棧解決P2P連接問題;媒體棧用于發送和接收RTC的音頻和視頻。
LETF標準規定G.711和Opus作為音頻/視頻解碼器。視頻解碼器尚未授權,但是H.248和VP8已經獲得授權。媒體棧也用于交換RTC數據。本例中,實時信息采用消息會話中繼協議(MSRP),實時會議采用二層控制協議(BFCP),實時文本服務采用T.140。
網易云信,你身邊的即時通訊和音視頻技術專家,了解我們,請戳網易云信官網
想要行業洞察和技術干貨,請關注網易云信博客
本文轉載自52im,作者:JackJiang
總結
以上是生活随笔為你收集整理的WebRTC实时音视频技术基础:基本架构和协议栈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IM群聊消息如此复杂,如何保证不丢不重?
- 下一篇: 实时通信RTC技术栈之:视频编解码