VUE实现Web端多人语音视频聊天
1 多人语音聊天功能介绍
本文展示了如何使用 ZEGO Express SDK 构造多人音视频通话场景,即实现多对多实时音视频聊天互动。用户可在房间内与其余用户进行实时音视频通话,互相推拉流。该场景可用于多人实时音视频聊天、多人视频会议等。
2 Web端实现多人语音聊天准备工作
在应用多人音视频通话场景之前,请确保:
- 已在项目中集成 ZEGO Express SDK,实现基本的实时音视频功能,详情请参考 快速开始 - 集成 和 快速开始 - 实现流程。
- 已在 ZEGO 控制台 创建项目,并申请有效的 AppID,详情请参考 控制台 - 项目管理 中的“项目信息”。
3 vue集成语音聊天示例源码下载
请参考 下载示例源码 获取源码。
相关源码请查看ZEGO Express SDK “src/Examples/Scenes/VideoForMultipleUsers” 目录下的文件。
4 ZEGO音视频SDK使用步骤
本节将介绍如何使用 ZEGO Express SDK 实现多人视频通话。
流程图如下:
![]()
API 调用时序图如下:
![]()
ZEGO Express SDK 可支持多人视频通话,如上时序图以 2 名房间成员间的实时视频通话为例,建议开发者参考上述流程设计自己的多人实时视频通话场景。
4.1 创建多人音视频聊天引擎实例
创建 ZegoExpressEngine 引擎实例,将申请到的 AppID 传入参数 “appID”,将接入服务器地址传入参数 “server”。
“server” 为接入服务器地址,获取方式如下:
- 登录 ZEGO 控制台。
- 在对应项目下单击“查看”。
- 进入“项目配置”界面,在“项目信息”页签的“配置信息”中,单击 “ServerSecret” 后面的小眼睛按钮即可获取对应的接入服务器地址。
const zg = new ZegoExpressEngine(appID, server);
4.2 多人语音聊天开启房间内用户变化通知
开发者需在每位用户调用 loginRoom 接口登录房间时,将 ZegoRoomConfig 中的 “userUpdate” 设置为 “true” ,用于接收其他用户进出房间的回调通知(即 roomUserUpdate。
const isLogin = await zg.loginRoom(
roomID,
token,
{ userID },
{ userUpdate: true }
);
4.3 监听回调事件
为实现多人视频通话功能,需要监听房间内用户和流的增减并做出相应处理,开发者可根据实际需要,实现 ZegoEvent(包含 ZegoRTCEvent 和 ZegoRTMEvent)中的某些方法,创建引擎后可通过调用 on) 接口设置回调。
4.3.1 监听房间内的用户变化
只有调用 loginRoom 登录房间时设置了关注用户变化,即 ZegoRoomConfig 中的 “userUpdate” 设置为 “true”(默认值为 “false”)时,才能监听 roomUserUpdate 回调。
为了监听房间内的用户变化,需注册 roomUserUpdate 回调,已登录房间内用户的新增和删除都会触发该回调,开发者可以根据实际需要在回调中实现自己的业务逻辑。
回调中 “updateType” 参数指明了房间内用户变化的类型,该参数取值如下:
| 用户变化类型 | 枚举值 | 说明 |
|---|---|---|
| 用户新增 | ADD | 房间内用户增加(即加入房间),“userList” 为新增的用户列表。 |
| 用户减少 | DELETE | 房间内用户减少(即退出房间),“userList” 为减少的用户列表。 |
用户首次登录房间时,若此房间内已存在其他用户,该新登录用户会通过此回调接收到新增类型的用户列表,即 “updateType” 为 “ADD” 的回调,该用户列表为房间内已存在的用户。
zg.on('roomUserUpdate', (roomID, updateType, userList) => {
console.log('roomUserUpdate roomID ', roomID, streamList);
if (updateType === 'ADD') {
// update view
} else if(updateType == 'DELETE') {
// update view
}
});
4.3.2 多人语音聊天监听房间内的流变化
当某条流被删除时,如果开发者正在调用 startPlayingStream 接口拉取该流,请调用 stopPlayingStream 接口停止拉流,否则 SDK 会报拉流错误。
为监听房间内的流变化,需注册 roomStreamUpdate 回调,已登录房间内流的新增和删除都会触发该回调,开发者可以根据实际需要在回调中实现自己的业务逻辑。
回调中 “updateType” 参数指明了房间内流变化的类型,该参数取值如下:
| 流变化类型 | 枚举值 | 说明 |
|---|---|---|
| 流新增 | ADD | 房间内流增加,“streamList” 为新增的流列表。 |
| 流减少 | DELETE | 房间内流减少,“streamList” 为减少的流列表。 |
用户首次登录房间时,若此房间内存在其他用户正在推流,会接收到流新增列表,即 “updateType” 为 “ADD” 的回调。
zg.on('roomStreamUpdate', (roomID, updateType, streamList) => {
console.log('roomStreamUpdate roomID ', roomID, streamList);
if(updateType === 'ADD') {
// update view
} else if(updateType == 'DELETE') {
// update view
}
});
4.3 推流、拉流、登录房间其他操作
请参考 快速开始 - 实现流程 依次完成登录房间、推流和拉流相关操作。
5 API 参考列表
| 方法 | 描述 |
|---|---|
ZegoExpressEngine |
初始化 Engine |
roomStreamUpdate |
房间内流变化回调 |
roomUserUpdate |
房间内用户变化回调 |
loginRoom |
登录房间 |
createStream |
创建流 |
startPublishingStream |
开始推流 |
startPlayingStream |
开始拉流 |
stopPublishingStream |
停止推流 |
stopPlayingStream |
停止拉流 |
logoutRoom |
退出房间 |
5 获取音视频SDK更多帮助
获取本文的Demo、开发文档、技术支持,访问即构文档中心
近期有开发规划的开发者可上即构官网查看,恰逢即构七周年全线音视频产品1折的优惠,联系商务获取RTC产品优惠;
VUE实现Web端多人语音视频聊天的更多相关文章
- 【转】OMCS网络语音视频聊天框架(跨平台)
原文地址:http://www.cnblogs.com/zhuweisky/archive/2012/08/02/2617877.html OMCS网络语音视频框架是集成了语音通话.视频通话.远程桌面 ...
- 对接网易云信音视频2.0呼叫组件集成到vue中,实现web端呼叫app,视频语音通话。
项目中需要实现视频通话功能,经过公司的赛选,采用网易云信的视频通话服务,app小伙伴集成很顺利.web端需要实现呼叫app端用户.网易云信文档介绍不全,vue的demo满足不了需求,和客服人员沟通,只 ...
- web端文字转语音的几种方案
最近在开发一个微信排队取号的的系统,其中对于服务员端(管理端) 需要有呼叫功能,即点按钮 就播出"xxx号顾客请就座"的声音. 经过在网上一番搜索研究,web端实现指定文字的语音播 ...
- php在web端播放amr语音(如微信语音)
在使用微信JSSDK的上传下载语音接口时,发现一个问题: 下载的语音在iPhone上不能播放,测试了之后原因竟然是: 微信接口返回的音频内容是amr格式的,但iPhone不支持播放此类型格式. 那么转 ...
- C#实现多人语音聊天
在上一篇文章 实现一个简单的语音聊天室(多人语音聊天系统)中,我用C#实现了一个简单的语音聊天室,并给出了源代码下载.尽管有源代码,可是非常多朋友反映,理解起来还是有些模糊.不够清楚.如今想来,是由于 ...
- 如何实现Web视频聊天?
在网页里实现文字聊天是比较容易的,但若要实现视频聊天,就比较麻烦了.这里,我们将实现一个简单的网页版视频聊天Demo,可以支持所有类型的浏览器. 本Demo除了视频聊天功能外,还包含以下功能: 1.上 ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天、控制更多相关细节
在广域网中,由于网络的结构纷繁复杂.而且其实时状况又是千变万化的,所以,要使广域网中的视频聊天达到一个令人满意的效果,存在诸多挑战.这次发布的GG 3.7版本尝试在这一方向上做一些努力,据我自己测试, ...
- 循序渐进做项目系列(4)迷你QQ篇(2)——视频聊天!(附源码)
一·效果展示 源码派送:MiniQQ1.1 文字聊天的实现参见:循序渐进做项目系列(3):迷你QQ篇(1)——实现客户端互相聊天 二·服务端设计 对于实现视频聊天而言,服务端最核心的工作就是要构造多媒 ...
- vue仿微信网页版|vue+web端聊天室|仿微信客户端vue版
一.项目介绍 基于Vue2.5.6+Vuex+vue-cli+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术混合架构开发的仿微信web端聊天室— ...
- 腾讯云点播视频存储(Web端视频上传)
官方文档 前言 所谓视频上传,是指开发者或其用户将视频文件上传到点播的视频存储中,以便进行视频处理.分发等. 一.简介 腾讯云点播支持如下几种视频上传方式: 控制台上传:在点播控制台上进行操作,将本地 ...
随机推荐
- Vmware workstation安装部署微软WSUS服务应用系统
简介 WSUS全称Windows Server Update Services,是微软开发的免费服务器角色,用于在企业内网中集中管理Windows系统及微软产品的更新分发.其前身为Windows ...
- Linux Shell整理小知识
Linux Shell整理小知识 介绍两个命令 1. shopt shell option, 即shell的一些选项设置 [root@localhost ~]# shopt autocd off cd ...
- 简述odoo18的一个请求执行流程
以下是Odoo中一个完整请求走向的每一步所涉及的技术细节: 用户发起请求: 技术:HTTP/HTTPS协议,通过Web浏览器或其他HTTP客户端库. 到达WSGI服务器: 技术:通常使用Gunicor ...
- GC面试重点:垃圾回收机制
你知道哪些垃圾回收算法?垃圾回收从理论上非常容易理解,具体的方法有以下几种: 1. 标记-清除:2. 标记-复制:3. 标记-整理:4. 分代回收. 如何判断一个对象是否应该被回收?这就是所谓的对象存 ...
- cosbench工具使用方法
一.Cosbench工具介绍 cosbench是intel开源的针对对象存储开发的测试工具 二.Cosbench安装 运行环境: 这里我们的系统是Centos7.6 依赖软件: JDK nmap-nc ...
- 五、Linux系统常用调试工具
4.2.ps(查看进程状态) 用途:显示系统中运行的进程及其相关信息,如 PID(进程 ID).CPU 使用率.内存占用等. 常见用法: ps aux # 显示所有进程,包含用户.PID.CPU/内存 ...
- Web Platform Tests (WPT) 跨浏览器测试套件
项目标题与描述 Web Platform Tests (WPT) 是一个跨浏览器的测试套件,用于验证Web平台栈的兼容性.其目标是确保不同浏览器实现的一致性,帮助开发者构建跨浏览器兼容的Web应用. ...
- Alovoa - 开源隐私优先的约会平台
项目标题与描述 Alovoa是一个旨在成为首个广泛使用的免费开源约会网络平台.与其他平台不同,Alovoa具有以下核心价值: 无广告 不出售用户数据 无付费功能(无"付费超级喜欢" ...
- 前端开发系列058-网络篇之DOM和DOM操作
一.关于DOM 简单介绍 DOM(全称为Document Object Model)即文档对象模型,是用于表示和操作HTML或XML文档内容的一套基础API. ✧ 有时候我们可能会看到DHTML这个专 ...
- C语言中如何不用strcat函数来连接2个数组
C语言中如何不用strcat函数来连接2个数组? 今天就遇到这个问题,所以就尝试了一下,虽然这个问题被好多大佬看作就不是问题,但我还是对这方面做个简单的介绍. 下面是我的代码和运行情况. 其实简单的引 ...

