商城系統(tǒng) 注冊(cè)

小程序多人視頻通話如何實(shí)現(xiàn)

2018-01-31|HiShop
導(dǎo)讀:小程序多人視頻通話需要通過(guò)騰訊視頻云實(shí)現(xiàn),那么要如何實(shí)現(xiàn),操作流程如下:...

小程序多人視頻通話需要通過(guò)騰訊視頻云實(shí)現(xiàn),那么要如何實(shí)現(xiàn),操作流程如下:


功能體驗(yàn)

在微信小程序中搜索騰訊視頻云可以加載到我們的演示用小程序,其中多人音視頻功能可用于體驗(yàn)和測(cè)試多人音視頻通話功能。出于 UI 美觀和畫(huà)面大小的考慮,Demo 中僅支持了最多四人的視頻通話,您可以通過(guò)修改源碼中的限制參數(shù)來(lái)調(diào)整這個(gè)數(shù)值。

 

技術(shù)指標(biāo)

通訊延遲:300ms - 800ms

底層協(xié)議:基于 UDP 協(xié)議構(gòu)建,并遵循 RTMP 標(biāo)準(zhǔn)對(duì)音視頻數(shù)據(jù)進(jìn)行切分和封裝,支持丟包恢復(fù)和網(wǎng)絡(luò)自適應(yīng)。

安全加密:每次連接都獨(dú)立啟用一對(duì)全新的非對(duì)稱(chēng)加密密鑰,整個(gè)通訊過(guò)程無(wú)法監(jiān)聽(tīng)和篡改。

支持錄制:如果需要可以在云端進(jìn)行錄制,適用于在線客服、金融開(kāi)戶等商用音視頻解決方案,支持私有化部署。

雙人vs多人

雙人音視頻僅僅是兩個(gè)端之間交換 URL 這么簡(jiǎn)單,但是從雙人通話到多人通話,問(wèn)題的復(fù)雜性就迅速增加了。

 

我們可以將房間中的成員都交給 Server 來(lái)管理,由于 Server 的信息是集中的,因此不會(huì)出現(xiàn)信息不一致性的 BUG,只要各個(gè)終端在需要的時(shí)候從 Server 同步最新的成員列表到本地(GET LIST)即可,同時(shí),新成員的加入或者退出,亦可由 Server 完成通知。

為了幫您更好的實(shí)現(xiàn)基于 Server 的解決方案,我們推薦您使用 RTCRoom 解決方案:

RTCROOM

RTCRoom(RealTime ChatRoom)存在的意義在于封裝雙人或者多人音視頻實(shí)現(xiàn)過(guò)程中需要考慮的各種細(xì)節(jié)邏輯問(wèn)題,比如房間管理、狀態(tài)同步,消息收發(fā)等等,讓您只需要面對(duì)幾個(gè)非常簡(jiǎn)單的接口,從而快速構(gòu)建自己的音視頻能力。

原理解讀

 

小程序多人視頻通話如何實(shí)現(xiàn)Client

RTCRoom 的 Client 部分(小程序上的 RTCRoom 是一個(gè)叫做 rtcroom.js 的 javascript 文件) 提供了一組 API 接口:

CreateRoom創(chuàng)建一個(gè)雙人(或多人)視頻通話房間,調(diào)用這個(gè)接口的人即為創(chuàng)建者。

EnterRoom

進(jìn)入一個(gè)已經(jīng)創(chuàng)建好的視頻通話房間,調(diào)用這個(gè)接口的人即為參與者。

ExitRoom退出一個(gè)視頻通話房間,在我們的默認(rèn)實(shí)現(xiàn)中,如果是創(chuàng)建者退出,房間將被解散,您可以根據(jù)自己的需要進(jìn)行調(diào)整。

SendTxtMsg

發(fā)送文本消息,用于作為視頻交流的輔助手段,通常是用來(lái)發(fā)送一些不重要的系統(tǒng)通知。

事件通知事件通知,比如新的與會(huì)者加入,或者有人離開(kāi),等等。

小程序的限制

由于小程序是嚴(yán)格遵循數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)理念,所以不支持動(dòng)態(tài)創(chuàng)建 對(duì)象, 因此我們還無(wú)法做到讓您無(wú)需關(guān)心這兩個(gè)標(biāo)簽而直接使用 RTCRoom,因此小程序端的 Demo 代碼要比 iOS、Android 以及 Win 平臺(tái)要復(fù)雜一點(diǎn)點(diǎn)。

Server

列表管理RTCRoom 的 Server 部分是一組用于房間列表管理成員列表管理的簡(jiǎn)單代碼實(shí)現(xiàn)。以視頻會(huì)議為例,一個(gè)公司同時(shí)可能會(huì)有多個(gè)進(jìn)行中的視頻會(huì)議,那么每一個(gè)會(huì)議都是一個(gè)房間,每一個(gè)房間里又有多個(gè)與會(huì)者。所以對(duì)于房間的管理和對(duì)于房間中成員的管理就是 Server 部分的工作。

事件通知

同時(shí),Server 還有一個(gè)重要職責(zé),就是當(dāng)房間解散以及成員進(jìn)出時(shí),通過(guò) IM 消息通道通知房間里的各個(gè)成員。由于騰訊云已經(jīng)有非常成熟的 IM 通訊解決方案,所以我們直接復(fù)用騰訊云 IM 實(shí)現(xiàn)房間內(nèi)各成員的狀態(tài)通知。

心跳機(jī)制除了音視頻鏈路,小程序和 Server 之間最好還要加一個(gè)心跳機(jī)制,這種方式用于甄別微信是否發(fā)生了意外崩潰,您也可以使用騰訊云音視頻鏈路的中斷通知來(lái)達(dá)到同樣效果,但是接入復(fù)雜性要高很多。源碼下載RTCRoom 是一套開(kāi)源實(shí)現(xiàn),在 iOS,Android,Windows、小程序以及服務(wù)器端均有一套示例源碼。其中客戶端的源碼主要是提供 CreateRoom、EnterRoom、ExitRoom 等進(jìn)出房間的接口,而服務(wù)端源碼則用于房間管理,并通過(guò)騰訊云通訊(IM)服務(wù)向房間內(nèi)成員發(fā)送事件通知。操作系統(tǒng)下載鏈接源碼位置小程序DOWNLOAD小程序源碼 zip 包中的 wxlite 文件夾服務(wù)端DOWNLOAD小程序源碼 zip 包中的 server 文件夾iOSDOWNLOADSDK 開(kāi)發(fā)包 RtcRoom.mAndroidDOWNLOADSDK 開(kāi)發(fā)包 RtcRoom.javaWindowsDOWNLOADDemo 源碼中的 RTCRoom.h+RTCRoom.cpp

小程序端源碼包的內(nèi)部目錄結(jié)構(gòu):

RTMPRoom
├── README.md
├── server               //后臺(tái)代碼目錄,具體目錄節(jié)后見(jiàn)文檔稍后部分
├── wxlite               //騰訊視頻云小程序目錄
├── ├── pages            //騰訊視頻云小程序界面主目錄
├── ├── ├── main         //騰訊視頻云小程序主界面
├── ├── ├── liveroom     //騰訊視頻云小程序直播體驗(yàn)室
├── ├── ├── ├────roomlist//騰訊視頻云小程序直播體驗(yàn)室列表界面
├── ├── ├── ├────room    //騰訊視頻云小程序直播體驗(yàn)室直播界面
├── ├── ├── doubleroom   //騰訊視頻云小程序雙人音視頻
├── ├── ├── ├────roomlist//騰訊視頻云小程序雙人音視頻在線列表
├── ├── ├── ├────room    //騰訊視頻云小程序雙人音視頻視頻聊天界面
├── ├── ├── multiroom    //騰訊視頻云小程序多人音視頻
├── ├── ├── ├────roomlist//騰訊視頻云小程序多人音視頻在線列表
├── ├── ├── ├────room    //騰訊視頻云小程序多人音視頻視頻聊天界面
├── ├── ├── cameraview   //騰訊視頻云小程序雙人、多人聊天推流自定義組件
├── ├── ├── play         //騰訊視頻云小程序播放界面
├── ├── ├── push         //騰訊視頻云小程序推流界面
├── ├── ├── rtpplay      //騰訊視頻云小程序低延時(shí)播放界面
├── ├── ├── vodplay      //騰訊視頻云小程序點(diǎn)播播放界面
├── ├── ├── Resources    //騰訊視頻云小程序資源目錄
├── ├── lib              //小程序使用的通用庫(kù)目錄
├── ├── utils            //騰訊視頻云小程序界工具庫(kù)目錄
├── ├── ├── rtcroom.js   //騰訊視頻云小程序雙人、多人音視頻庫(kù)文件
├── ├── ├── liveroom.js  //騰訊視頻云小程序單向音視頻庫(kù)文件
└── └── config.js        //配置文件,主要配置后臺(tái)服務(wù)器地址
服務(wù)端端源碼包的內(nèi)部目錄結(jié)構(gòu):

一鍵部署

下載源碼只需要點(diǎn)幾下鼠標(biāo),但是讓 RTCRoom 跑起來(lái)卻未必是件容易的事情,尤其是在您沒(méi)有服務(wù)器的情況下。考慮到這一點(diǎn),我們提供了免費(fèi)的一鍵部署服務(wù),您只需要免費(fèi)開(kāi)通幾項(xiàng)騰訊云服務(wù),即可在 5 分鐘時(shí)間內(nèi)快速搭建出自己的調(diào)試環(huán)境。

雙人場(chǎng)景

RTCRoom 不僅僅可用于多人場(chǎng)景,雙人視頻通話也可以使用,而且要比從零開(kāi)始用 構(gòu)建雙人視頻通話功能要簡(jiǎn)單的多。

 


HiShop小程序工具提供多類(lèi)型商城/門(mén)店小程序制作,可視化編輯 1秒生成5步上線。通過(guò)拖拽、拼接模塊布局小程序商城頁(yè)面,所看即所得,只需要美工就能做出精美商城。

更多小程序資訊,盡在:m.descansotropical.com/xiaocx/

電話咨詢 預(yù)約演示 0元開(kāi)店