1多人视频通话功能本文介绍如何使用实时音视频SDKZEGOExpressSDK构建多人视频通话功能-人视频通话场景,即实现多对多实时音视频交互。用户可以与房间内的其他用户进行实时视频通话,互相推拉。该场景可用于多人实时视频聊天、视频会议等。2多人语音通话前提条件应用多人视频语音通话前,请确保:ZEGOExpressSDK已经集成在项目实现基本的实时音视频功能。详见快速入门-集成和快速入门-实现视频通话。项目已在ZEGO控制台创建,并申请了有效的AppID和AppSign。详情请参见控制台-项目管理中的“项目信息”。3Android端多人语音通话示例源码下载请参考下载示例源码获取源码。相关源码请参考“/ZegoExpressExample/Scenes/src/main/java/im/zego/Scenes/VideoForMultipleUsers”目录下的文件。4使用ZEGOExpressSDK进行多人语音通话的步骤本节将介绍如何使用ZEGOExpressSDK实现多人视频通话。AppID和AppSign传入参数“appID”和“appSign”创建引擎单例对象。如果需要注册回调代理,可以将一个实现了IZegoEventHandler的对象传入参数“eventHandler”。如果不需要注册回调代理,可以将“null”传入参数“eventHandler”。如果创建引擎后还需要注册回调,可以通过调用setEventHandler接口设置回调代理。/**定义SDK引擎对象*/ZegoExpressEngine引擎;ZegoEngineProfileprofile=newZegoEngineProfile();/**请通过官网注册,格式为123456789L*/profile.appID=appID;/**64个字符,请通过官网注册获取,格式为“0123456789012345678901234567890123456789012345678901234567890123”*/profile.appSign=appSign;/**通用场景访问*/profile.scenario=ZegoScenario.GENERAL;/**设置app/profileapplication.getapp对象*;/**创建引擎*/engine=ZegoExpressEngine.createEngine(profile,null);4.2多人视频通话功能实现房间内用户变更通知开发者需要将ZegoRoomConfig中的“isUserStatusNotify”设置为每个用户登录房间时“isUserStatusNotify”为“true”,以接收其他用户进出房间时的回调通知。ZegoRoomConfigRoomConfig=newZegoRoomConfig();RoomConfig.isUserStatusNotify=true;//登录房间engine.loginRoom(roomID,user,RoomConfig);4.3多人视频通话预览自己的画面并推送到远端用户调用loginRoom后,可以调用startPublishingStream接口,传入"streamID"将自己的音视频流推送到ZEGO音视频云。可以通过回调setEventHandler监听onPublisherStateUpdate回调,了解推流是否成功。如果想看到自己的画面,可以调用startPreview接口设置预览视图,启动本地预览。“streamID”是你本地生成的,但是你需要保证“streamID”在同一个AppID下是全局唯一的。如果不同的用户在同一个AppID下推送同一个“streamID”的流,会导致后面推流的用户推流失败。//预览推流engine.startPreview(newZegoCanvas(preview));//preview是一个View对象,开发者可以根据业务自定义,一般使用的是TextureView对象engine.startPublishingStream("YOUR_STREAM_ID");//用户端的StreamID4.4多人视频通话拉取音视频流4.4.1多人视频聊天拉取其他用户的音视频进行视频通话,我们需要拉取其他用户的音视频。onRoomStreamUpdate:当同房间的其他用户向ZEGO音视频云推送音视频流时,我们会在该回调中收到新的音视频流通知。在这个回调中,我们可以调用startPlayingStream,传入“streamID”来拉取并播放用户的音视频。可以通过监听onPlayerStateUpdate回调了解音视频是否拉取成功。4.4.2多人语音聊天显示用户进出房间信息。onRoomUserUpdate回调可用于监控房间内的用户变化。当房间内的其他用户进入或退出时会触发此回调。onRoomUserUpdate回调在房间人数大于500时不保证有效,如果在业务场景下房间人数大于500,不应该依赖这个回调来设计业务逻辑。如果房间人数大于500时需要使用该回调,请联系ZEGO技术支持。4.4的代码示例如下:engine.setEventHandler(newIZegoEventHandler(){@OverridepublicvoidonRoomUserUpdate(StringroomID,ZegoUpdateTypeupdateType,ArrayList
