知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
騰訊云獨家詳解小程序多人視頻通話
發(fā)表時間:2021-3-31
發(fā)布人:葵宇科技
瀏覽次數(shù):49
功能體驗
在微信小程序中搜索 騰訊視頻云 可以加載到我們的演示用小程序,其中 多人音視頻 功能可用于體驗和測試多人音視頻通話功能。出于 UI 美觀和畫面大小的考慮,Demo 中僅支持了最多四人的視頻通話,您可以通過修改源碼中的限制參數(shù)來調(diào)整這個數(shù)值。
技術(shù)指標(biāo)
- 通訊延遲:300ms - 800ms
- 底層協(xié)議:基于 UDP 協(xié)議構(gòu)建,并遵循 RTMP 標(biāo)準(zhǔn)對音視頻數(shù)據(jù)進(jìn)行切分和封裝,支持丟包恢復(fù)和網(wǎng)絡(luò)自適應(yīng)。
- 安全加密:每次連接都獨立啟用一對全新的非對稱加密密鑰,整個通訊過程無法監(jiān)聽和篡改。
- 支持錄制:如果需要可以在云端進(jìn)行錄制,適用于在線客服、金融開戶等商用音視頻解決方案,支持私有化部署。
雙人vs多人
雙人音視頻僅僅是兩個端之間交換 URL 這么簡單,但是從雙人通話到多人通話,問題的復(fù)雜性就迅速增加了。
如下是一種解決問題的思路,即每個端都要維護好各端的狀態(tài)信息:
這種方案的對于終端開發(fā)不是很友好,代碼會很復(fù)雜也不易閱讀,更重要的是,它極易引入各端信息不一致的 BUG。所以我們可以考慮讓 Server 來協(xié)助解決這個問題:
我們可以將房間中的成員都交給 Server 來管理,由于 Server 的信息是集中的,因此不會出現(xiàn)信息不一致性的 BUG,只要各個終端在需要的時候從 Server 同步最新的成員列表到本地(GET LIST)即可,同時,新成員的加入或者退出,亦可由 Server 完成通知。
為了幫您更好的實現(xiàn)基于 Server 的解決方案,我們推薦您使用 RTCRoom 解決方案:
<h2 id="RTCROOM">RTCROOM </h2>
RTCRoom(RealTime ChatRoom)存在的意義在于封裝雙人或者多人音視頻實現(xiàn)過程中需要考慮的各種細(xì)節(jié)邏輯問題,比如房間管理、狀態(tài)同步,消息收發(fā)等等,讓您只需要面對幾個非常簡單的接口,從而快速構(gòu)建自己的音視頻能力。
原理解讀
Client
RTCRoom 的 Client 部分(小程序上的 RTCRoom 是一個叫做 rtcroom.js 的 javascript 文件) 提供了一組 API 接口:
- CreateRoom 創(chuàng)建一個雙人(或多人)視頻通話房間,調(diào)用這個接口的人即為創(chuàng)建者。
- EnterRoom
進(jìn)入一個已經(jīng)創(chuàng)建好的視頻通話房間,調(diào)用這個接口的人即為參與者。
- ExitRoom 退出一個視頻通話房間,在我們的默認(rèn)實現(xiàn)中,如果是創(chuàng)建者退出,房間將被解散,您可以根據(jù)自己的需要進(jìn)行調(diào)整。
- SendTxtMsg
發(fā)送文本消息,用于作為視頻交流的輔助手段,通常是用來發(fā)送一些不重要的系統(tǒng)通知。
- 事件通知 事件通知,比如新的與會者加入,或者有人離開,等等。
- 小程序的限制
由于小程序是嚴(yán)格遵循數(shù)據(jù)驅(qū)動的設(shè)計理念,所以不支持動態(tài)創(chuàng)建 <live-pusher> 和 <live-player> 對象, 因此我們還無法做到讓您無需關(guān)心這兩個標(biāo)簽而直接使用 RTCRoom,因此小程序端的 Demo 代碼要比 iOS、Android 以及 Win 平臺要復(fù)雜一點點。
Server
- 列表管理 RTCRoom 的 Server 部分是一組用于 房間列表管理 和 成員列表管理 的簡單代碼實現(xiàn)。以視頻會議為例,一個公司同時可能會有多個進(jìn)行中的視頻會議,那么每一個會議都是一個房間,每一個房間里又有多個與會者。所以對于房間的管理和對于房間中成員的管理就是 Server 部分的工作。
- 事件通知
同時,Server 還有一個重要職責(zé),就是當(dāng)房間解散以及成員進(jìn)出時,通過 IM 消息通道通知房間里的各個成員。由于騰訊云已經(jīng)有非常成熟的 IM 通訊解決方案,所以我們直接復(fù)用騰訊云 IM 實現(xiàn)房間內(nèi)各成員的狀態(tài)通知。
- 心跳機制 除了音視頻鏈路,小程序和 Server 之間最好還要加一個心跳機制,這種方式用于甄別微信是否發(fā)生了意外崩潰,您也可以使用騰訊云音視頻鏈路的中斷通知來達(dá)到同樣效果,但是接入復(fù)雜性要高很多。源碼下載RTCRoom 是一套開源實現(xiàn),在 iOS,Android,Windows、小程序以及服務(wù)器端均有一套示例源碼。其中客戶端的源碼主要是提供 CreateRoom、EnterRoom、ExitRoom 等進(jìn)出房間的接口,而服務(wù)端源碼則用于房間管理,并通過騰訊云通訊(IM)服務(wù)向房間內(nèi)成員發(fā)送事件通知。操作系統(tǒng)下載鏈接源碼位置小程序DOWNLOAD小程序源碼 zip 包中的 wxlite 文件夾服務(wù)端DOWNLOAD小程序源碼 zip 包中的 server 文件夾iOSDOWNLOADSDK 開發(fā)包 RtcRoom.mAndroidDOWNLOADSDK 開發(fā)包 RtcRoom.javaWindowsDOWNLOADDemo 源碼中的 RTCRoom.h+RTCRoom.cpp
- 小程序端源碼包的內(nèi)部目錄結(jié)構(gòu):
RTMPRoom
├── README.md
├── server //后臺代碼目錄,具體目錄節(jié)后見文檔稍后部分
├── wxlite //騰訊視頻云小程序目錄
├── ├── pages //騰訊視頻云小程序界面主目錄
├── ├── ├── main //騰訊視頻云小程序主界面
├── ├── ├── liveroom //騰訊視頻云小程序直播體驗室
├── ├── ├── ├────roomlist//騰訊視頻云小程序直播體驗室列表界面
├── ├── ├── ├────room //騰訊視頻云小程序直播體驗室直播界面
├── ├── ├── doubleroom //騰訊視頻云小程序雙人音視頻
├── ├── ├── ├────roomlist//騰訊視頻云小程序雙人音視頻在線列表
├── ├── ├── ├────room //騰訊視頻云小程序雙人音視頻視頻聊天界面
├── ├── ├── multiroom //騰訊視頻云小程序多人音視頻
├── ├── ├── ├────roomlist//騰訊視頻云小程序多人音視頻在線列表
├── ├── ├── ├────room //騰訊視頻云小程序多人音視頻視頻聊天界面
├── ├── ├── cameraview //騰訊視頻云小程序雙人、多人聊天推流自定義組件
├── ├── ├── play //騰訊視頻云小程序播放界面
├── ├── ├── push //騰訊視頻云小程序推流界面
├── ├── ├── rtpplay //騰訊視頻云小程序低延時播放界面
├── ├── ├── vodplay //騰訊視頻云小程序點播播放界面
├── ├── ├── Resources //騰訊視頻云小程序資源目錄
├── ├── lib //小程序使用的通用庫目錄
├── ├── utils //騰訊視頻云小程序界工具庫目錄
├── ├── ├── rtcroom.js //騰訊視頻云小程序雙人、多人音視頻庫文件
├── ├── ├── liveroom.js //騰訊視頻云小程序單向音視頻庫文件
└── └── config.js //配置文件,主要配置后臺服務(wù)器地址
- 服務(wù)端端源碼包的內(nèi)部目錄結(jié)構(gòu):
server
├── README.md
├── app.js // 服務(wù)器端 的主入口文件,使用 Koa 框架,在 `app.js` 創(chuàng)建一個 Koa 實例并響應(yīng)請求。
├── double_room // 雙人實時音視頻房間,每個js文件對應(yīng)一個https接口的實現(xiàn)
│ ├── index.js
│ ├── get_im_login_info.js
│ ├── get_push_url.js
│ ├── create_room.js
│ ├── destroy_room.js
│ ├── add_pusher.js
│ ├── delete_pusher.js
│ ├── get_pushers.js
│ ├── pusher_heartbeat.js
│ └── get_room_list.js
├── multi_room // 多人實時音視頻房間,每個js文件對應(yīng)一個https接口的實現(xiàn)
│ ├── index.js
│ ├── get_im_login_info.js
│ ├── get_push_url.js
│ ├── create_room.js
│ ├── destroy_room.js
│ ├── add_pusher.js
│ ├── delete_pusher.js
│ ├── get_pushers.js
│ ├── pusher_heartbeat.js
│ └── get_room_list.js
├── live_room // RTMP直播房間業(yè)務(wù)邏輯,每個js文件對應(yīng)一個https接口的實現(xiàn)
│ ├── index.js
│ ├── get_im_login_info.js
│ ├── get_push_url.js
│ ├── create_room.js
│ ├── destroy_room.js
│ ├── add_pusher.js
│ ├── delete_pusher.js
│ ├── get_pushers.js
│ ├── pusher_heartbeat.js
│ └── get_room_list.js
├── utils // 存放服務(wù)器端輔助接口的目錄
│ ├── index.js
│ ├── get_test_pushurl.js
│ ├── get_test_rtmpaccurl.js
│ ├── getlogfile.js
│ └── logfilelist.js
├── logic //
│ ├── im_mgr.js // 云通信相關(guān)的處理,主要功能
│ ├── live_util.js // 輔助函數(shù),負(fù)責(zé)生成推流地址以及播放地址,以及用戶ID分配和房間ID分配的功能
│ ├── double_room_mgr.js // 雙人實時音視頻房間管理模塊
│ ├── multi_room_mgr.js // 多人實時音視頻房間管理模塊
│ └── live_room_mgr.js // 標(biāo)準(zhǔn) RTMP 直播房間管理模塊
├── middlewares
│ ├── bodyparser.js
│ └── response.js
├── config.js // 配置騰訊云直播服務(wù)和云通訊服務(wù)的相關(guān)參數(shù),如推流防盜鏈key,bizid等
├── log.js // 后臺日志模塊,主要記錄請求響應(yīng)和錯誤兩大類日志。
├── log_config.js
├── package.json
├── process.json
├── nodemon.json
├── qcloud.js
└── routes
└── index.js // 服務(wù)器端路由定義文件:即每個 https 接口具體是由哪個 js 文件所實現(xiàn)的
一鍵部署
下載源碼只需要點幾下鼠標(biāo),但是讓 RTCRoom 跑起來卻未必是件容易的事情,尤其是在您沒有服務(wù)器的情況下??紤]到這一點,我們提供了免費的一鍵部署服務(wù),您只需要免費開通幾項騰訊云服務(wù),即可在 5 分鐘時間內(nèi)快速搭建出自己的調(diào)試環(huán)境。
雙人場景
RTCRoom 不僅僅可用于多人場景,雙人視頻通話也可以使用,而且要比從零開始用 <live-pusher> 和 <live-player> 構(gòu)建雙人視頻通話功能要簡單的多。
原創(chuàng)聲明,本文系作者授權(quán)云+社區(qū)-專欄發(fā)表,未經(jīng)許可,不得轉(zhuǎn)載。
如有侵權(quán),請聯(lián)系[email protected]刪除。
相關(guān)案例查看更多
相關(guān)閱讀
- 網(wǎng)站上首頁
- 制作一個小程序
- 報廢車拆解系統(tǒng)
- asp網(wǎng)站
- 云南小程序代建
- 云南微信小程序開發(fā)
- 報廢車拆解軟件
- 旅游網(wǎng)站建設(shè)
- web
- 網(wǎng)站開發(fā)
- 小程序開發(fā)聯(lián)系方式
- 小程序開發(fā)平臺前十名
- 云南做百度小程序的公司
- 小程序定制
- 云南旅游網(wǎng)站建設(shè)
- php網(wǎng)站
- 百度小程序公司
- 云南小程序被騙蔣軍
- 網(wǎng)站建設(shè)服務(wù)
- 報廢車
- 文山小程序開發(fā)
- 云南花農(nóng)小程序
- 重慶網(wǎng)站建設(shè)公司
- 云南小程序商城
- 小程序退款
- 云南網(wǎng)站建設(shè)首頁
- 昆明小程序哪家好
- 云南網(wǎng)絡(luò)營銷顧問
- 網(wǎng)站排名
- 汽車報廢拆解管理系統(tǒng)