本文展示了如何使用 ZEGO Express SDK 构造多人视频通话场景,即实现多对多实时音视频互动。用户可在房间内与其余用户进行实时视频通话,互相推拉流。该场景可用于多人实时视频聊天、视频会议等。
在应用多人视频通话场景之前,请确保:
请参考 下载示例源码 获取源码。
相关源码请查看 “/pages/example/other/scenes/video-multiple-user.nvue” 目录下的文件。
本节将介绍如何使用 ZEGO Express SDK 实现多人视频通话。
ZEGO Express SDK 可支持多人视频通话,如上时序图以 2 名房间成员间的实时视频通话为例,建议开发者参考上述流程设计自己的多人实时视频通话场景。
定义 SDK 引擎对象,调用 createEngineWithProfile 接口,将申请到的 AppID 和 AppSign 传入参数 “appID” 和 “appSign”,创建引擎单例对象。
// 定义 SDK 引擎对象
let engine = undefine;
// 创建引擎,AppID 和 AppSign 由 ZEGO 分配给各 App;为了安全考虑,建议将 AppSign 存储在 App 的业务后台,需要使用时从后台获取;采用通用场景
const profile = {
appID : xxx,
appSign : "xxx",
scenario : 0
};
engine = await ZegoExpressEngine.createEngineWithProfile(profile)
开发者需在每位用户登录房间时将 ZegoRoomConfig 中的 “isUserStatusNotify” 设为 “true” ,用于接收其他用户进出房间的回调通知。
// 登录房间
this.engine.loginRoom(roomID, user, {isUserStatusNotify: true});
为实现多人视频通话功能,需要监听房间内用户和流的增减并做出相应处理,可通过 on 设置相关回调。
注册 roomUserUpdate 回调,用于监听房间内的用户变化,已登录房间内用户的新增和删除都会触发该回调。
回调中 “updateType” 参数指明了房间内用户变化的类型,该参数取值如下:
用户变化类型 | 枚举值 | 说明 |
---|---|---|
用户新增 | ZegoUpdateType.Add | 房间内用户增加,“userList” 为新增的用户列表。 |
用户减少 | ZegoUpdateType.Delete | 房间内用户减少,“userList” 为减少的用户列表。 |
用户首次登录房间时,若此房间内已存在其他用户,该新登录用户会通过此回调接收到新增类型的用户列表,即 “updateType” 为 “ZegoUpdateType.Add” 的回调,该用户列表为房间内已存在的用户。
this.engine.on("roomUserUpdate", (roomID, updateType, userList) => {
// 在这里更新 UI 或执行其他操作
});
为监听房间内的流变化,需注册 roomStreamUpdate 回调,房间内其他用户新增或删除流时将触发此回调通知变更的流列表。
回调中 “updateType” 参数指明了房间内流变化的类型,该参数取值如下:
流变化类型 | 枚举值 | 说明 |
---|---|---|
流新增 | ZegoUpdateType.Add | 房间内流增加,“streamList” 为新增的流列表。 |
流减少 | ZegoUpdateType.Delete | 房间内流减少,“streamList” 为减少的流列表。 |
用户首次登录房间时,若此房间内存在其他用户正在推流,会接收到流新增列表,即 “updateType” 为 “ZegoUpdateType.Add” 的回调。
this.engine.on("roomStreamUpdate", (roomID, updateType, streamList) => {
// 在这里更新 UI 或执行其他操作
});
请参考 快速开始 - 实现流程 依次完成“推流”和“拉流”相关操作。
联系我们
文档反馈