1、問題提出
想要實現音視頻通話,對于大部分人可能會覺得很難,但是實際上,有些事情并沒有大家想的那樣困難,只要功夫深,鐵杵磨成針。
機緣巧合下,在業務中,我也遇到了一個業務場景需要實現音視頻通話,我們不可能自己從零開始干,我本次用到的核心是WebRTC。
2、WebRTC簡介
WebRTC (Web Real-Time Communications) 是一項實時通訊技術,它允許網絡應用或者站點,在不借助中間媒介的情況下,建立瀏覽器之間點對點(Peer-to-Peer)的連接,實現視頻流和(或)音頻流或者其他任意數據的傳輸。WebRTC 包含的這些標準使用戶在無需安裝任何插件或者第三方的軟件的情況下,創建點對點(Peer-to-Peer)的數據分享和電話會議成為可能。
WebRTC 瀏覽器與終端兼容性
WebRTC 在所有現代瀏覽器中都可用。Google Chrome、Mozilla Firefox、Apple Safari 和 Microsoft Edge 都支持它。也可以將其集成到應用程序或嵌入式設備中,而完全不需要瀏覽器。
3、技術架構圖
整個音視頻通訊過程如上圖圖所示。
- 通過本地調用音頻或攝像頭,獲取音視頻流;
- WebRTC兩個客戶端分別與Signal 服務器建立連接 ,Signal 服務端為WebRTC端分配房間/加入指定的房間,并返回WebRTC房間信息;
- WebRTC端會創建RTCPeerConnection媒體連接,這個連接需要知道雙方的流媒體數據格式才能進行后續的數據傳輸,它們通過Signal 服務端進行SDP媒體協商;
(1)WebRTC-1先創建RTCPeerConnection媒體連接,并生成Offer請求(包含了它這個客戶端支持的的媒體格式等內容),并將其設置到RTCPeerConnection的LocalDescription,然后向Signal 服務器發送Offer 請求,由其轉發給WebRTC-2端。
(2)WebRTC-2端收到了Offer請求,也會創建RTCPeerConnection媒體連接,并將Offer請求中對端支持的SDP 設置到RTCPeerConnection的RemoteDe