如何使用ZEGOExpressSDK实现多人语音通话?详情介绍:当前通讯
1 多人视频通话功能
(资料图片)
本文展示了如何使用 即构实时音视频SDK ZEGO Express SDK 构造多人视频通话场景,即实现多对多实时音视频互动。用户可在房间内与其余用户进行实时视频通话,互相推拉流。该场景可用于多人实时视频聊天、视频会议等。
2 多人语音通话的前提条件
在应用多人视频语音通话场景之前,请确保:
已在项目中集成 ZEGO Express SDK,实现基本的实时音视频功能,详情请参考 快速开始 - 集成 和 快速开始 - 实现视频通话。已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 - 项目管理 中的“项目信息”。
3 安卓端多人语音通话的示例源码下载
请参考 下载示例源码 获取源码。
相关源码请查看 “/ZegoExpressExample/Scenes/src/main/java/im/zego/Scenes/VideoForMultipleUsers” 目录下的文件。
4 即构多人语音通话SDK的使用步骤
本节将介绍如何使用 ZEGO Express SDK 实现多人视频通话,流程图如下:
4.1 多人语音聊天SDK创建引擎
定义 SDK 引擎对象,调用 createEngine接口,将申请到的 AppID 和 AppSign 传入参数 “appID” 和 “appSign”,创建引擎单例对象。
如果需要注册回调代理,可将实现了 IZegoEventHandler的对象传入参数 “eventHandler”。如果不需要注册回调代理,可将 “null” 传入参数 “eventHandler”,创建引擎后仍需要注册回调时可通过调用 setEventHandler接口设置回调代理。
/** 定义 SDK 引擎对象 */ZegoExpressEngine engine;ZegoEngineProfile profile = new ZegoEngineProfile();/** 请通过官网注册获取,格式为 123456789L */profile.appID = appID;/** 64个字符,请通过官网注册获取,格式为"0123456789012345678901234567890123456789012345678901234567890123" */profile.appSign = appSign;/** 通用场景接入 */profile.scenario = ZegoScenario.GENERAL;/** 设置app的application 对象 */profile.application = getApplication();/** 创建引擎 */engine = ZegoExpressEngine.createEngine(profile, null);
4.2 多人视频通话功能开启房间内用户变化通知
开发者需在每位用户登录房间时将 ZegoRoomConfig中的 “isUserStatusNotify” 设为 “true”,用于接收其他用户进出房间的回调通知。
ZegoRoomConfig RoomConfig = new ZegoRoomConfig();RoomConfig.isUserStatusNotify = true;// 登录房间engine.loginRoom(roomID, user, RoomConfig);
4.3 多人视频通话预览自己的画面,并推送到远端
在用户调用 loginRoom之后,可以调用 startPublishingStream接口,传入 “streamID”,将自己的音视频流推送到 ZEGO 音视频云。您可通过回调 setEventHandler监听 onPublisherStateUpdate回调知晓推流是否成功。
如果希望看到自己的画面,可调用 startPreview接口设置预览视图,并启动本地预览。
“streamID” 由您本地生成,但是需要保证:同一个 AppID 下,“streamID” 全局唯一。如果同一个 AppID 下,不同用户各推了一条 “streamID” 相同的流,会导致后推流的用户推流失败。
//进行预览和推流engine.startPreview(new ZegoCanvas(preview));//preview 为一个View 对象,开发者可以根据业务自定义,一般常用的是TextureView对象 engine.startPublishingStream("YOUR_STREAM_ID");//用户本端的StreamID
4.4 多人视频通话拉取音视频流
4.4.1 多人视频聊天拉取其他用户的音视频
进行视频通话时,我们需要拉取到其他用户的音视频。
onRoomStreamUpdate:在同一房间内的其他用户将音视频流推送到 ZEGO 音视频云时,我们会在此回调中收到音视频流新增的通知。
我们可以在该回调中,调用 startPlayingStream,传入 “streamID” 拉取播放该用户的音视频。您可通过监听 onPlayerStateUpdate回调知晓是否成功拉取音视频。
4.4.2 多人语音聊天展示用户进出房间的信息
onRoomUserUpdate回调可以用于监听房间内的用户变化,房间内其他用户进入或退出都会触发该回调。
房间人数大于 500 人的情况下 onRoomUserUpdate回调不保证有效。若业务场景存在房间人数大于 500 的情况,不应依赖于该回调设计业务逻辑。若有在房间人数大于 500 时使用该回调的需求,请联系 ZEGO 技术支持。
4.4 的代码示例如下:
engine.setEventHandler(new IZegoEventHandler() {@Override public void onRoomUserUpdate(String roomID, ZegoUpdateType updateType, ArrayListuserList) {super.onRoomUserUpdate(roomID, updateType, userList); //房间用户变化回调,本示例是以toast为展示示例,实际业务流程需开发者按需设计 if(updateType == ZegoUpdateType.ADD){// 当 “updateType” 为 “ZegoUpdateTypeADD” 时,用户可以拉取 userList 里的用户进行处理 for(ZegoUser user : userList){//进行Toast展示 Toast.makeText(myActivity,user.userID+"加入房间",Toast.LENGTH_SHORT).show();//myActivity为一个content对象,若在activity中可使用该Activity为参数 } }else{// 当 “updateType” 为 “ZegoUpdateTypeDelete” 时,用户可以拉取 userList 里的用户进行处理 for(ZegoUser user : userList){//进行Toast展示 Toast.makeText(myActivity,user.userID+"加入房间",Toast.LENGTH_SHORT).show();//myActivity为一个content对象,若在activity中可使用该Activity为参数 } } } @Override public void onRoomStateUpdate(String roomID, ZegoRoomState state, int errorCode, JSONObject extendedData) {//房间状态回调 super.onRoomStateUpdate(roomID, state, errorCode, extendedData); if(state == ZegoRoomState.CONNECTED){//可以根据实际业务进行设计 } } @Override public void onRoomStreamUpdate(String roomID, ZegoUpdateType updateType, ArrayList< ZegoStream > streamList, JSONObject extendedData) {// 流变化回调 super.onRoomStreamUpdate(roomID, updateType, streamList, extendedData); // 在这里更新 UI 或执行其他操作 if(updateType == ZegoUpdateType.ADD){// 当 “updateType” 为 “ZegoUpdateTypeADD” 时,用户可以拉取 streamList 里各条音视频流以展示房间内其他用户的画面和声音 for(ZegoStream stream : streamList){//进行拉流,preview 为一个View 对象,开发者可以根据业务自定义,一般常用的是TextureView对象;在展示多人视频的时候,开发者需要使用不同的 View 承载不同音视频流的画面,保证不同用户的视频不会重叠在一起;此处的示例代码会覆盖当前正在拉流的画面 engine.startPlayingStream( stream.streamID,new ZegoCanvas(preview)); } }else{// 当 “updateType” 为 “ZegoUpdateTypeDELETE” 时,用户可以停止拉取相应的音视频流 for(ZegoStream stream : streamList){//停止拉流 engine.stopPlayingStream( stream.streamID); } } } });
多人语音聊天SDK的 API 调用时序图参考
5 获取 Java 多人语音聊天SDK 更多帮助
获取本文Java 多人语音聊天SDK的开发文档、技术支持,访问即构文档中心,可实现视频会议和直播场景下多人视频语音聊天功能;
近期有开发规划的开发者可上即构官网查看,恰逢即构七周年全线音视频产品1折的优惠,联系商务获取产品优惠;
标签:
相关推荐:
最新新闻:
- 苹果手机为什么充不进电?苹果手机充电充不进去电的原因及解决方法-每日动态
- 三星e728报价是多少?三星首款天线折叠手机E728评测-环球消息
- Android音频开发及录音文件的配置
- 当前热议!【管理-固件升级】从DD-WRT固件刷到Tomato的升级方案
- 可以搜附近人的交友软件有哪些?有哪些靠谱的交友软件?
- 如何查询appInfo、appName?appInfo查询方法_当前关注
- Windows、Mac、Unix、Linux什么是iOS?-报道
- 世界观天下!GIS开发Georver:共享地理空间数据的开源服务器
- SP2的系统怎么操作?如何使用SP2的系统文件?
- dv机哪个好?索尼FD-AX100E热门款型推荐
- 如何使用ZEGOExpressSDK实现多人语音通话?详情介绍:当前通讯
- Android直播新思路:4.1Android推流到服务器:要闻速递
- 如何修改支付宝绑定的手机号码?支付宝绑定的手机号码如何修改? 简讯
- QQ.COM二级域名大全 腾讯旗下产品大全
- 每日消息!泛域名证书不起作用?主机绑定多个域名就可以了
- 当前看点!cad怎么导出jpg图片格式?cad导出jpg图片格式的方法
- 带你走一遍自定义View之旅——效果图
- 天天观点:iOS14/iPadOS14正式发布 支持升级至苹果机型
- 【每日一练】什么是预编译?何时需要编译?
- 在pycharm中运行代码时显示下面错误如何解决?
- 3999元起!长虹最新手机三款介绍评测来了
- 手机合约机和裸机有什么区别?合约机和裸机有什么好处?
- 模板文件css.htm制作教程 Discuz!模板文件的简单讲解
- 如何在12306网上订火车票官网退票?12306网上订火车票官网退票教程|当前最新
- 华为mate40Pro如何开启颜色反转?开启颜色反转方式:今日最新
- vuejs之Vue2.x中的父组件数据传递至子组件的方法
- 天天最新:在Ubuntu18.04、Deep终端中实现输入密码回显星号
- 天天简讯:在访问网页中弹出“脚本错误”的提示框 如何解决?
- 《绝地求生》主播打造3A级开放世界生存游戏新作 世界观热点
- 今年夏季《忍者小子》将改编成四人合作动作游戏
- 环球新动态:性价比绝了!中兴小方糖双频千兆路由器99元
- 不怕偷 哈罗电动车2373元
- 长江存储颗粒!梵想S500PRO 2TB M.2固态硬盘低至579元|环球观察
- 又曝大Bug!Windows 11会导致SSD速度降低
- 清仓大促销!AMD R5-5500板U套装低至789元
- 每日资讯:Roguelike策略卡牌游戏《河口蟾蜍》面向PC公布
- Epic喜+1:策略游戏《战锤40K:角斗士之战争圣器》 下周送《终极象棋》
- 《红霞岛》公布剧情预告 5月2日正式发售 快讯
- 阿斯报:维尼修斯将视频出庭指证种族主义辱骂他的马洛卡球迷:要闻
- 【环球新视野】《迪士尼竞速风暴》将于4/18以抢先体验形式推出
- 2023年科隆展将迎来一个大厂回归 有更多公司参加-天天亮点
- 湖北省黄石市市场监管局抽检食品42批次 1批次不合格
- 环保少女偷删世界末日预言推文 曾称人类会被毁灭_全球今亮点
- 外媒:《GTA6》应加入私服 因为《GTAOL》私服很火
- 【全球独家】DLSS3普及速度更快:《暗黑4》《极限竞速:地平线5》和虚幻5.2
- 英国有6家游戏公司支持微软收购 只有索尼不支持
- 全球观速讯丨小米智能鱼缸399元开售 支持半年免换水 远程喂鱼
- 本田召回近45万辆汽车 安全带自己会开
- 特斯拉Model 3改装120寸大轮毂:暴力测试来了
- 天禄科技(301045):关于召开2023年第三次临时股东大会,审议《关于公司符合向特定对象发行股票条件的议案》等议案
- 观速讯丨现实版GTA?美国劫匪偷直升机因操作失误当场坠毁
- 《最终幻想起源:天堂的陌生人》4月登陆Steam-全球观点
- 确有其事还是开玩笑?刘德华将导演成龙吴京电影 世界热头条
- 张译新剧《他是谁》豆瓣大量好评!张译演技绝了-简讯
- 今日播报!外星人 m16 游戏本 RTX4050/4060/4070 开卖:15999 元起
- 今日精选:iPhone 14黄色版跌到5200 卖的格外好
- 即时焦点:马自达CX-50开售:58分钟卖出2000台
- 【天天播资讯】《最后生还者》艾莉妈妈演员晒幕后照:化妆超逼真
- 快看:微软与多家游戏平台签署COD协议 网友:就剩索尼了
- 世界最新:一段“诡异录像”里 藏着一位波兰小伙的游戏梦
- 诚信是老字号立身之本:环球视讯
- 闪购价,哈曼卡顿水晶 3 代音响仅售 999 元|焦点精选
- 汉印照片打印机CP2100:随心所印,留存美好
- 找工呀受邀参加汽车行业人资峰会,展示硬核招聘实力_环球微动态
- 环球今日报丨立省195元!16GB内存条崩盘价174元
- “绵阳造”上海行 长虹激光携光影耀申城
- 卡普空《恐龙浩劫》公测开启 残暴恐龙大军来袭
- 当前视讯!游民专访周董...的卫冕电竞战队Jteam
- 环球微速讯:《生化危机4:重制版》艾达王篇和佣兵模式或以DLC形式推出
- 文心一言秒变毕加索 看看百度AI画的青春校园女孩
- 环球聚焦:透明键盘超炫酷!戴尔背光机械键盘直降400元入手
- 调教Siri!苹果入局人工智能_环球微头条
- 王者荣耀体验服爆料:新增姐弟关系,基友关系改名
- 优势互补、携手共赢|极智嘉(Geek+)合作九州云智
- 每日观察!提前尝鲜!参与京东“先人一步”提前到手Find X6系列新机
- 环球精选!手游太赚钱!去年苹果手游收入几乎等于Xbox总收入
- 当前关注:11bit推出超豪华捆绑包 工作室所有作品打包卖95元
- 文心一言已有650家合作伙伴接入:内测并不完美
- 天天观速讯丨《机动战士高达:激战任务2》下载量突破500万 官方举办感谢活动
- Steam2023春季促销有哪些游戏?Steam春促2023哪些游戏打折?
- 感觉还不错 《生化危机4重制版》第一人称mod 世界实时
- 10股特大单净流入资金超2亿元_今日热闻
- 天天最新:看看有没有你的手机!MIUI 14第三批正式发布,共有18款手机机型在名单中
- 品质永不过时,A.O.史密斯加力打造智能舒适家居放心服务:天天热闻
- 对信息泄露和定位跟踪说“再见”,TD Tech F4智防手机护你安全出行