這就是整一個連接過程。
如果連接成功就開始傳輸多媒體數據,這裡面WebRTC做了很多工作。
(3)WebRTC P2P傳輸
WebRTC整體的架構如下圖所示(可見官網):
主要的工作包括:
(1)音視頻的編解碼(VP8/VP9/AV1)
(2)抗丟包和擁塞控制
(3)回聲和噪音消除
WebRTC一個很大的作用就體現在這裡了——提供可靠的傳輸、優質的編解碼以及回聲問題消除,筆者曾經還用了一個叫h323 plus的包做了一個項目,也是P2P連接。而現在這種實時多媒體傳輸功能直接內嵌到瀏覽器裡面,對於開發人員來說無疑大大地提高了開發效率。
在實際的線上項目裡面,由於P2P連通率和穩定性並不是特別樂觀,所以更多地是採用P2SP的架構,S代表Server,如下圖所示:
一方面能夠提高穩定性,另一方面能夠解決一對多和多對多視頻聊天的問題。因為WebRTC比較適用於一對一的,在一對多場景讓一個用戶的流推給幾個用戶不管是性能還是上傳帶寬都可能會有問題。
可以做一個兼容方案,當P2P不行的時候就切到P2SP.
關於RTCDataChannel這裡不展開討論,實際場景還是使用WebSocket比較多。
5. WebRTC的未來
WebRTC已經被W3C發佈了1.0標準,但是暫未成為RFC標準。WebRTC也在逐漸地發展,包括:
(1)Chrome 69使用了新的回聲消除算法AEC3
(2)VP9編碼提升了35%的質量,新的AV1編碼可以在Chrome裡面使用
(3)包括RTCRtpSender等更加豐富的操縱API
未來的RTC將會提供更多功能:
(1)直接操作媒體流數據的能力(現在得通過CaptureStream間接操作)
(2)自定義編解碼參數的能力RTCRtpEncodeingParameters(Chrome 70)
等等。
相信WebRTC的未來是非常光明的。
閱讀更多 前端小學生 的文章