php web音视频通话,实现音视频通话(Web)

实现音视频通话(Web)

网易云信音视频通话产品的基本功能包括高质量的实时音视频通话。当您成功初始化 SDK 之后,您可以简单体验本产品的基本业务流程。本文档为您展示音视频通话提供的基本业务流程。

前提条件

请确认您已完成以下操作:

快速跑通Sample Code

注意:在运行示例项目之前,请联系商务经理开通非安全模式。非安全模式建议只在集成开发阶段使用,请在应用正式上线前改回安全模式。

在SDK和示例代码下载页面或 Demo 体验页面下载需要体验的示例项目或 Demo 源码工程。

在 /src/views/home/index.vue 文件中配置 App Key。

data () {

return {

isSilence: false,

isDesc: true,

isStop: false,

desc: '等待对方进入...',

appkey: '', //填入您的appkey

token: '',

client: null,

localUid: Math.ceil(Math.random() * 1e5),

localStream: null,

remoteStream: null

}

},

运行项目。

该工程使用 vue(vue-cli 4.x) 技术栈,请使用 node 开发环境 version 8+。

// Project setup

npm install

// Compiles and hot-reloads for development

npm run dev

// Compiles and minifies for production

npm run build

// Lints and fixes files**

npm run lint

实现音视频通话

本节主要介绍如何使用 SDK 实现音视频通话。主要流程如下图所示:

8e37122659950a0996fec32dd9e119a1.png

WebRTC2 中有两个重要类:

Client

代表一个本地客户端。Client 类的方法提供了音视频通话的主要功能,例如加入房间、发布音视频流等。

Stream

代表本地和远端的音视频流。Stream 类的方法用于定义音视频流对象的行为,例如流的播放控制、音视频的编码配置等。调用 Stream 方法时,请注意区分本地流和远端流对象。

1. 引用文件

在项目相应的前端页面文件中,对 NIM_Web_WebRTC2_vx.x.x.js 文件进行引用。

import 方式引入:

import WebRTC2 from '../../NIM_Web_WebRTC2_vx.x.x.js'

script 标签引入:

2. 初始化

执行 createClient 方法创建 client 实例。

//示例

//创建client实例

rtc.client = WebRTC2.createClient({

appkey: 'xxx', //您的 appkey

debug: true, //是否开启调试日志

});

3. 设置本地视图

初始化成功后,可以设置设置本地视图,预览本地图像。加入房间后,可以执行 publish 方法发布自己的多媒体流至流媒体,供其他用户订阅。

//初始化本地流并且发布

function initLocalStream(){

//创建本端stream实例,销毁前无需重复创建

rtc.localStream = WebRTC2.createStream({

uid: uid, // 本端的uid

audio: true, // 是否从麦克风采集音频

microphoneId: microphoneId, // 麦克风设备 deviceId,通过 getMicrophones() 获取

video: true, // 是否从摄像头采集视频

cameraId: cameraId // 摄像头设备 deviceId,通过 getCameras() 获取

})

//启动本地音视频流,销毁前无需重复初始化

rtc.localStream.init().then(()=>{

console.warn('音视频初始化完成,播放本地视频')

//用于播放视频的div元素

let div = document.getElementById('local-container')

//开始播放本地视频流

rtc.localStream.play(div)

//设置播放的视频容器大小

rtc.localStream.setLocalRenderMode({

width: 180,

height: 150,

cut: true // 是否裁剪

})

// 将本地音视频流发布至云信服务器,加入房间前不用执行此方法。

rtc.client.publish(rtc.localStream).then(()=>{

console.warn('本地 publish 成功')

})

})

}

4. 加入房间

加入房间前,请确保已完成初始化相关事项。若您的业务中涉及呼叫邀请等机制,可以使用信令。

//加入频道

rtc.client.join({

channelName: '频道名称',

uid: uid,

token: ''

}).then((obj) => {

console.info('加入频道成功...')

//初始化本地流,并且发布

initLocalStream() //后面介绍说明

})

参数说明:

参数

说明

token

安全认证签名(NERTC Token)。可设置为:null。非安全模式下可设置为 null。安全性不高,建议在产品正式上线前联系对应商务经理转为安全模式。

已获取的NERTC Token。安全模式下必须设置为获取到的 Token 。若未传入正确的 Token 将无法进入房间。

推荐使用安全模式。

channelName

房间名称,设置相同房间名称的用户会进入同一个通话房间。

注意:您也可以在加入通道前,通过创建房间接口创建房间。加入房间时,若传入的 {channelName} 未事先创建,则云信服务器内部将为其自动创建一个名为 {channelName} 的通话房间。

uid

用户的唯一标识 id,房间内每个用户的 uid 必须是唯一的。

5. 设置远端视图

音视频通话过程中,除了要显示本地的视频画面,通常也要显示参与互动的其他连麦者/主播的远端视频画面。

通过以下回调获取相关信息:

peer-online:监听远端用户加入通话房间的事件,并抛出对方的 uid。当本端加入房间后,也会通过此回调抛出通话房间内已有的其他用户。

stream-added:监听远端用户发布视频流的事件,回调中携带对方的 uid 与发布的视频分辨率。

在监听到远端用户发布视频流后,本方可以通过 subscribe 方法对其发起视频流的订阅,来将对方的视频流渲染到视频画布上。

// 示例

//设置要订阅音频或者视频

remoteStream.setSubscribeConfig({

audio: true,

video: true

})

// 发起订阅

rtc.client.subscribe(remoteStream).then(()=>{

console.log('发起订阅对端成功')

})

订阅成功后,可进一步在 stream-subscribed 回调中播放远端视频流。

//播放订阅的对端的音视频流

rtc.client.on('stream-subscribed', evt => {

console.warn('订阅别人的流成功的通知')

var remoteStream = evt.stream;

let div = document.getElementById('remote-container')

//开始播放远端音视频流

remoteStream.play(div).then(()=>{

console.log('播放对端的流成功')

remoteStream.setRemoteRenderMode({

width: 180,

height: 150,

cut: true

})

})

})

6. 退出通话房间

通过 leave() 接口退出通话房间。

//用户无需做一些清除动作,sdk会自动做清除逻辑

rtc.client.leave()

7. 销毁实例

当确定短期内不再使用音视频通话实例时,可以释放对应的对象资源。

//一般情况下无需使用

rtc.client.destroy()

本篇文档内容是否对您有帮助?

04c71eec4a2781fca7013f8beb54eb1e.png有帮助

2739a73467429f691aa770d9f31af7ff.png我要吐槽

如果遇到产品相关问题,您可 提交工单 或 在线客服 寻求帮助。

您的改进建议

×

问题类型

内容错误

内容没更新

描述不清

链接有误

步骤不完整

内容缺失(缺少代码/示例)

其他

更多建议

请输入您的建议或问题(至少5个字符,至多500个字符)

联系方式

标记内容

同时提交标记内容

提交

此文档对你是否有帮助

×

04c71eec4a2781fca7013f8beb54eb1e.png有帮助

2739a73467429f691aa770d9f31af7ff.png我要吐槽

×

反馈成功

0caf71608042dc93edd3c864e71208b5.png非常感谢您的反馈,我们会继续努力做得更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Open vSwitch】Open vSwitch的VxLAN隧道网络实验

验参考: Open vSwitch的VxLAN隧道网络实验 实验步骤: 1. 预先配置: 1. 验证两虚拟机的OvS服务是否被启动好: # ps –ef|grep ovs 2. 登陆两台安装Mininet的虚拟机,分别查看IP地址: VM1(192.168.0.102&#…

centos oracle创建库,CentOS Oracle安装必要的软件创建数据库

CentOS Oracle安装系统的特性,既可作为高校计算机专业CentOS Oracle安装学习,也可以作为CentOS系统开源爱好者、CentOS系统用户CentOS Oracle安装系统的特性,,既可作为高校计算机专业CentOS Oracle安装学习,也可以作为…

(转载)windows server 2003的注意事项

Windows Server 2003需要注意的地方Windows Server 2003分为4个版本:标准版、企业版、Datacenter 版和 Web版,对硬件系统的最小要求为:最小CPU速度 133MHz,推荐CPU速度 550MHz最小内存要求 128M,推荐最小内存 256M安装…

【Open vSwitch】Open vSwitch流表应用实战

实验参考: Open vSwitch流表应用实战 如何在ubuntu系统下搭建一个opendaylight Beryllium版本环境 实验步骤: 1. 前期准备。 1.创建2个虚拟机,一个是选择OpenDaylight镜像的虚拟机作为控制器(注:内存大于2G&#xff09…

oracle sql loop merge,Oracle之存储过程和MERGE INTO语句

一、MERGE INTO语句1、merge into语句的功能:我们操作数据库的时候,有时候会遇到insert或者Update这种需求。我们操纵代码时至少需要写一个插入语句和更新语句并且还得单独写方法效验数据是否存在,这种操作完全可以用merge into语句代替&…

七月暴雨

狼是弱者 是生命无从着落的弱者 是黯然神伤的异族 它们此刻在星光月夜里 悲情地凝望厮守缠绵过的故园 在逡巡的感伤里作别 为了生命 为了延续 选择死亡或者选择离去 就像时间无意从指间滑过一样 悄悄的溜走 没有…

【OpenFlow】OpenFlow1.3协议基于Mininet部署与验证

实验参考: OpenFlow1.3协议基于Mininet部署与验证 实验步骤: 1. 安装mininet,具体步骤请看实验参考。 2. Mininet创建拓扑后连接支持OpenFlow1.3的控制器: 在连接前,可以通过命令确认控制器的端口号: 3. 进…

oracle gets/exec 单位,ORACLE AWR使用基础

ORACLE AWR使用基础Oracle Database 10g 提供了一个显著改进的工具:自动工作负载信息库(AWR)。Oracle 建议用户用这个取代Statspack。AWR 实质上是一个Oracle 的内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度&#xf…

思科(Cisco)IOS 12.3特性分析[ZT]

cisco的ios 12.3和其子版本不仅包含增加的基本变化和漏洞修复。一起来近距离体验12个最有用的变化,包括网络准入控制(nac),最优边缘路由,动态多点***,ipsec全状态故障恢复等。      可能会有少数网络工…

【OpenFlow】OpenFlow1.0协议分析

实验参考: OpenFlow1.0协议分析 实验步骤: Coming soon... 转载于:https://www.cnblogs.com/ptolemy/p/11257083.html

vs连接oracle数据库报错,用VS连接oracle数据库时ORA-12504错误

Android中的AlertDialog使用示例二(普通选项对话框)在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...OpenCV2学习笔记05:矩阵翻转对图像进行翻…

红龙大虾不能吃!

南京街头基本上所有的饭店、餐厅都再热买 红龙大虾,特别是世界杯期间,边看球边喝啤酒边吃红龙大虾几乎是所有餐厅的热门选择。但今天网上看了一编文章,才发现原来这个红龙大虾是万万不能吃的! 下面内容转自网易社区--------------…

【OpenDaylight】OpenDaylight的C/S模式实验

实验参考: OpenDaylight的C/S模式实验 实验步骤: 1. 启动OpenDaylight: 查看是否开启: 或: 2. 查看OpenDaylight的IP地址: 3. 用Miniet创建简易拓扑并连接ODL: 4. 在OpenDaylight虚拟机上查看监…

网管日志-06.07.24

现在时间是20:36分钟,我仍在机房工作着,还是那条光纤透明链路,本应该上个周就可以完成的工作,却一直拖到现在还没有解决,第一次是因为电信没有携带壁挂的odf,只能在机架式odf的一个法兰盘上熔接光纤&#x…

matlab平稳随机过程的功率谱密度,平稳随机过程的功率谱密度

《平稳随机过程的功率谱密度》由会员分享,可在线阅读,更多相关《平稳随机过程的功率谱密度(27页珍藏版)》请在人人文库网上搜索。1、平稳随机过程的功率谱密度,一、平稳过程的功率谱密度,假如 x( t ) 满足狄利克雷 (Dirichlet) 条件,且,绝对可积, 即,那么…

【OpenDaylight】OpenDaylight及Postman实现VxLAN网络实验

实验参考: OpenDaylight及Postman实现VxLAN网络实验 实验步骤: Coming soon... 转载于:https://www.cnblogs.com/ptolemy/p/11257095.html

linux vnc 改端口号,基于Linux中vnc配置端口号的修改方法

vnc的默认端口是自己配置的,并不是这有一个端口号。通过打开/etc/sysconfig/vncservers。 这里就配置了2个桌面,一个桌面号是1, 一个是2.这里的配置的参数VNCSERVERS"2:root"VNCSERVERARGS[2]"-geometry 1280x800"就可以…

Event Organization Site - To be published on 4th August

www.asp.net The first "By the Community, For the Community" sample! Do not forget it!

【OpenDaylight】OpenDaylight二层转发机制实验

实验参考: OpenDaylight二层转发机制实验 实验步骤: Coming soon... 转载于:https://www.cnblogs.com/ptolemy/p/11257102.html

linux怎么查看本地磁盘空间,linux怎么查看磁盘空间

如果你在使用Linux过程中遇到无法读写磁盘,应用程序无法执行,请求响应不了等问题,那多半是Linux系统磁盘空间满了,那么怎么查看Linux磁盘空间呢?下面跟着学习啦小编一起来了解一下吧。linux怎么查看磁盘空间首先如果需要查看整个…