声网的实时音视频总结
时间:2021-07-08
本文章向大家介绍声网的实时音视频总结,主要包括声网的实时音视频总结使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
对于实时音频及视频通话,我们已经司空见惯,比较常用的就是微信的音视频通话功能,对于这种功能,给我们的生活带来了极大的方便和改变。这里需要前端和后端配合,再结合声网(第三方SDK)就可以实现。(这里以小程序为例)
一、和后端配合
-
需要用到
webscoket
,让后端通过会议id(或者直播间id)或者什么方式将加入到这个会议或者直播中的人划分为一组。eg:我司是有个管理后台可以动态的生成链接,将链接中的特定参数和其它(如:密码等)实现登录 -
登录成功获取个人信息,这里我们是获取到个人id,会议室id等等(这些操作主要看后端)
二、利用声网第三方SDK(重点)
-
需要去官网注册账号并登录,登录成功后需要创建一个项目(有免费的和付费的),这里主要获取一个声网的 appid
-
去声网的官网文档中下载相应的SDK(有小程序,web,ios等很多的SDK)
-
在项目中引入对应的SDK后,在合适的地方进行实例化(我们在页面加载完成时)
this.client = new this.AgoraMiniappSDK.Client();
-
之后在合适的地方进行初始化客户端对象,需要 appid
this.client.init(this.appid,()=>{ console.log(`client init success`); this.join(); })
-
初始化完成后,进行加入频道(
实例的jion()
)操作,需要的参数:声网的token(需要后端去返回),频道号(我们是会议室id),个人的idthis.client.join(this.agoratoken,this.channel,this.weblogininfo.uid,()=>{ console.log("加入频道成功") },e=>{ console.log(e) // 加入失败 })
-
加入成功后,调用
实例的publish()
,来获取自己的这个推流地址,成功后利用小程序的live-pusher
进行推流this.client.publish(url=>{ this.pushurl = url <!-- this.examlive 是live-pusher的实例对象 --> this.examlive.start({ success: (a) => { console.log("推流成功") }, fail:(e)=>{ console.log('推流失败') } }) },e=>{ console.log(e) })
-
加入失败时调用
实例的rejoin()
,重新加入 -
还可以调用
实例的on()
来进行监听- 监听是否有人加入
stream-added
,获取加入人的信息,并通过实例的subscribe()
需要传入uid来获取加入人的播流地址
this.client.on("stream-added",e => { this.client.subscribe(e.uid,(url)=>{}) })
- 监听是否有人离开
stream-removed
this.client.on("stream-removed", e => { console.log(`${e.uid}的远端流移除成功`) },e=>{ console.log('移除失败') });
- 监听是否有人加入
-
实例的leave()
是离开的方法this.client.leave();
-
实例的destroy()
是销毁本地实例的
还可以和web端等互通,后续更新
原文地址:https://www.cnblogs.com/aloneer/p/14988669.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Element表单嵌套数据验证
- 摸鱼的新发现,滚动条无限滚动
- 理解装饰器是怎么使用的
- 第十一节:Activiti6.0——定时器开始事件、消息开始事件和错误开始事件介绍
- linux centos 安装mailx邮件服务器并测试发送一封邮件
- 深入分析Vue-Router原理,彻底看穿前端路由
- linux LVM 一键分区脚本自动扩容
- 再谈构造函数、原型、原型链之间的关系
- Java ConcurrentHashMap 高并发安全实现原理解析
- 第十二节:Activiti6.0——四种边界事件:定时器、错误、信号、补偿
- parted 磁盘分区-挂载-删除-shell脚本进行磁盘分区
- Ubuntu18.04——安装MySQL
- 八种 Vue 组件间通讯方式合集
- Sharding-JDBC 实现分库分表
- fastjson——使用 aop 打印入参,报错:getOutputStream() has already been called for this response