在微信小程序中搜索 腾讯视频云 可以加载到我们的演示用小程序其中 多人音视频 功能可用于体验和测试多人音视频通话功能。出于 UI 美观和画面大小的考虑Demo 中仅支持了最多四人的视频通话网站seo优化培训Demo 中仅支持了最多四人的视频通话您可以通过修改源码中的限制参数来调整这个数值。
底层协议:基于 UDP 协议构建并遵循 RTMP 标准对音视频数据进行切分和封装支持丢包恢复和网络自适应。
安全加密:每次连接都独立启用一对全新的非对称加密密钥整个通讯过程无法监听和篡改。
双人vs多人双人音视频仅仅是两个端之间交换 URL 这么简单但是从双人通话到多人通话问题的复杂性就迅速增加了。
如下是一种解决问题的思路即每个端都要维护好各端的状态信息:
这种方案的对于终端开发不是很友好代码会很复杂也不易阅读更重要的是它极易引入各端信息不一致的 BUG。所以我们可以考虑让 Server 来协助解决这个问题:
我们可以将房间中的成员都交给 Server 来管理由于 Server 的信息是集中的因此不会出现信息不一致性的 BUG只要各个终端在需要的时候从 Server 同步最新的成员列表到本地(GET LIST)即可同时服务器同时新成员的加入或者退出亦可由 Server 完成通知。
为了帮您更好的实现基于 Server 的解决方案我们推荐您使用 RTCRoom 解决方案:
<h2 id="RTCROOM">RTCROOM </h2>
RTCRoom(RealTime ChatRoom)存在的意义在于封装双人或者多人音视频实现过程中需要考虑的各种细节逻辑问题比如房间管理、状态同步消息收发等等让您只需要面对几个非常简单的接口从而快速构建自己的音视频能力。
原理解读 ClientRTCRoom 的 Client 部分(小程序上的 RTCRoom 是一个叫做 rtcroom.js 的 javascript 文件) 提供了一组 API 接口:
CreateRoom 创建一个双人(或多人)视频通话房间调用这个接口的人即为创建者。
EnterRoom
进入一个已经创建好的视频通话房间调用这个接口的人即为参与者。
ExitRoom 退出一个视频通话房间在我们的默认实现中如果是创建者退出房间将被解散您可以根据自己的需要进行调整。
SendTxtMsg
发送文本消息用于作为视频交流的辅助手段通常是用来发送一些不重要的系统通知。
事件通知 事件通知比如新的与会者加入或者有人离开等等。
小程序的限制
由于小程序是严格遵循数据驱动的设计理念所以不支持动态创建 <live-pusher> 和 <live-player> 对象, 因此我们还无法做到让您无需关心这两个标签而直接使用 RTCRoom因此小程序端的 Demo 代码要比 iOS、Android 以及 Win 平台要复杂一点点。
Server列表管理 RTCRoom 的 Server 部分是一组用于 房间列表管理 和 成员列表管理 的简单代码实现。以视频会议为例一个公司同时可能会有多个进行中的视频会议那么每一个会议都是一个房间每一个房间里又有多个与会者。所以对于房间的管理和对于房间中成员的管理就是 Server 部分的工作。
事件通知
同时Server 还有一个重要职责就是当房间解散以及成员进出时通过 IM 消息通道通知房间里的各个成员。由于腾讯云已经有非常成熟的 IM 通讯解决方案服务器通过 IM 消息通道通知房间里的各个成员。由于腾讯云已经有非常成熟的 IM 通讯解决方案所以我们直接复用腾讯云 IM 实现房间内各成员的状态通知。