- WebRTC音視頻實(shí)時(shí)互動(dòng)技術(shù):原理、實(shí)戰(zhàn)與源碼分析
- 李超編著
- 643字
- 2021-08-06 14:49:33
4.2 細(xì)化架構(gòu)
在4.1節(jié)中介紹了WebRTC一對(duì)一通信的整體結(jié)構(gòu)及其過(guò)程,下面對(duì)其進(jìn)一步細(xì)化,看看它內(nèi)部又做了什么,如圖4.2所示。
從圖4.2中可以看到它與圖4.1的架構(gòu)是類似的,只不過(guò)將每個(gè)端的內(nèi)部進(jìn)行了細(xì)化。圖中通信的雙方稱為Call和Called,即一個(gè)主叫,一個(gè)被叫。實(shí)際上,兩個(gè)終端內(nèi)部的邏輯是一樣的,這里以Call端為例,來(lái)看一下它內(nèi)部的結(jié)構(gòu)及其運(yùn)轉(zhuǎn)機(jī)制。
在Call端內(nèi)部,首先調(diào)用音視頻設(shè)備檢測(cè)模塊檢測(cè)終端是否有可用的音視頻設(shè)備,即步驟?;然后執(zhí)行第?步,調(diào)用音視頻采集模塊從設(shè)備中采集音視頻數(shù)據(jù);采集到數(shù)據(jù)后,執(zhí)行第?步開(kāi)啟客戶端錄制(是否開(kāi)啟錄制是可選的,用戶可以根據(jù)自己的需求選擇錄制或不錄制);當(dāng)數(shù)據(jù)采集相關(guān)的工作就緒后,執(zhí)行第?步,通過(guò)信令模塊與信令服務(wù)器建立連接;緊接著執(zhí)行第?步,創(chuàng)建RTCPeerConnection對(duì)象(RTCPeerConnection對(duì)象是WebRTC最核心的對(duì)象,后面音視頻數(shù)據(jù)的傳輸都靠它來(lái)完成)。RTCPeerConnection創(chuàng)建好后,系統(tǒng)要先將它與之前采集的音視頻數(shù)據(jù)綁定到一起,這樣RTCPeerConnection才知道從哪里獲取要發(fā)送的數(shù)據(jù)。以上就是圖4.2中前五步所完成的工作。

圖4.2 WebRTC 1:1架構(gòu)圖細(xì)化
接下來(lái)再來(lái)看一下RTCPeerConnection創(chuàng)建socket連接的過(guò)程。要建立socket連接,RTCPeerConnection首先要執(zhí)行圖4.2中的第?步,向STUN/TRUN服務(wù)器發(fā)送請(qǐng)求。STUN/TURN服務(wù)器收到Call的請(qǐng)求后,會(huì)將Call的外網(wǎng)IP地址和端口號(hào)作為應(yīng)答消息返回去;之后終端執(zhí)行第?步,通過(guò)信令服務(wù)器將Call的連接地址發(fā)送給對(duì)端。同理,Called也會(huì)將它的IP地址和端口發(fā)給Call。當(dāng)通信雙方都獲得對(duì)端的地址后,執(zhí)行第?步,此時(shí)socket連接就被建立起來(lái)了。至此,RTCPeerConnection就可以將音視頻數(shù)據(jù)源源不斷地發(fā)送給對(duì)端。以上就是WebRTC一對(duì)一通信的完整過(guò)程。
- Vue.js設(shè)計(jì)與實(shí)現(xiàn)
- OpenDaylight Cookbook
- C# 從入門(mén)到項(xiàng)目實(shí)踐(超值版)
- JMeter 性能測(cè)試實(shí)戰(zhàn)(第2版)
- Instant Zepto.js
- C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)教程
- Python零基礎(chǔ)快樂(lè)學(xué)習(xí)之旅(K12實(shí)戰(zhàn)訓(xùn)練)
- Java Web應(yīng)用開(kāi)發(fā)技術(shù)與案例教程(第2版)
- 機(jī)械工程師Python編程:入門(mén)、實(shí)戰(zhàn)與進(jìn)階
- Visual C++數(shù)字圖像處理技術(shù)詳解
- Managing Microsoft Hybrid Clouds
- Python一行流:像專家一樣寫(xiě)代碼
- Learning Alfresco Web Scripts
- 機(jī)器人ROS開(kāi)發(fā)實(shí)踐
- Python GUI設(shè)計(jì):tkinter菜鳥(niǎo)編程