Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实时音视频开发学习4 - 实现web端运行

实时音视频开发学习4 - 实现web端运行

原创
作者头像
金林学音视频
修改于 2020-08-24 10:18:25
修改于 2020-08-24 10:18:25
2.6K0
举报

TRTC实践功能

trtc的实践功能主要谈及两个模块,一个是web端,另一个为小程序端。这二者分别阐述了trtc的通话模式、直播模式、实时屏幕分享、云端流录制与回放CDN直播回放。

跑通通话模式 - web端

通话模式简单来说就是将本地的音视频通过云服务进行推流的过程,其涉及主要流程如下:

它一共可以分为三个模块,web前端交互行为、调用TRTC Web SDK过程以及向腾讯云发起请求。在web端可以通过监听登录事件,创建客户对象,并加入房间。在加入房间的过程中需要创建本地音视频流,并进行初始化,然后发布本地流音视频。但是在发布之前需要监听stream-added和stream-subscribed来订阅和接收远端音视频流。最后进行播放,播放可以传递一个id参数,SDK内部会在该div元素下自动创建音视频标签并在其上播放音视频。

当用户离开房间时,首先是停止远端流的发布,然后离开房间,并关闭停止和关闭本地流音视频。此外,在退出的时候需要还原一切登录之前的状态,并对一些全局变量做复原处理。

在编写代码的过程中,由于进入房间、发布流、初始化等为异步状态,因此可以使用ES6语法中的async/await来减轻代码的厚实感。为保证不会错过远端用户进房通知,我们可以创建类的形式,首先初始化监听事件,再在进入房间时进行调用相关的方法。具体流程如下:

创建RtcClient对象

初始化监听事件

这里增加了对系统错误的监听和用户取消发布,也就是用户在退出时的操作。

进房间和创建本地流

首先做一个能力监测,判断客户端对象的类是否监听到Join方法。然后再进入房间并创建本地流,这里的mirror为视频是否显示镜像,默认为true,在使用前置摄像头时需打开,但不适用于屏幕分享。

本地流初始化、发布和播放

发布订阅之后之所以能够直接播放,是因为我们初始化的时候已经做好了对应的事件监听。这里也可以增加一条用于监听音视频播放器状态变化事件,根据其状态变化来更新UI,如通过监听video player状态变化来打开/关闭遮板。

退出登录

用户退出操作只需完成退出逻辑和复原UI界面以及重置全局变量。退出逻辑主要包括取消发布、客户端离开以及将本地音视频流暂停和停止。复原UI界面主要是关闭聊天界面返回登录界面。重置全局对象包括是否进入房间isJoined、localStream_等,当然您如果不想这么麻烦其实也并不是一定要全部设置的。

跑通直播模式

直播模式下分为两种状态,一个是主播,另一个则为粉丝。通过实时音视频通话的模式可以相当主播进入房间,主播有一个房间roomID供粉丝进入的接口,这里只需要创建一个粉丝对象就能向主播进行拉流。粉丝主要拥有两个过程:进入直播间和同主播进行连麦互动。

前期准备

我们可以接着上一节demo进行参考,UI界面中新增一个“粉丝”模式,并给全局新增一个isAudience的判断,默认为false。

在预处理presettting中通过判断是否为粉丝登录来设置对应的粉丝ID

在进行登录的时候同样判断是否为粉丝登录来创建不同的客户端对象。在“粉丝”状态登录下,还需要对一些UI界面进行隐藏,如“退出/分享”按钮、将音视频图片按钮隐藏。这里需要注意的是,音视频(其实是图片)按钮不能给著视频网格”main-video-btns”添加隐藏hide或display:none,而需要分别给video-btn/mic-btn添加隐藏属性。

进入直播间

创建粉丝模式下的类AudienceClient,并创建客户端对象,并将模式mode设置为:live:

以观众身份进入主播直播间,这里需要提供主播房间ID和设置用户角色role。其中anchor为主播,能够发布本地流和接收远端流的权限。audience为观众,观众角色只有接收远端流的权限,没有发布本地流的权限。若观众想要和主播连麦互动,则需要先通过switchRole()切换为anchor角色后再发布本地流。

这里设置了一个登录标志isJoined_用于客户端检测,另外将异步过程使用try进行兜住。

收看直播

直播间的收看通过监听远端流事件stream-added进行获取,再通过subscribe来订阅远端流音视频流。

然后通过监听远端流事件stream-subscribed来判断订阅成功,同时在订阅成功之后播放远端流,这里的播放和实时音视频的播放一样,支持接收一个div元素ID作为参数。但是还添加来一个options选项,并设置objectFit为contain类型。

但是在实际写业务逻辑的时候还增加了两个过程

监听Audio/Video Player状态变化,可以监听player-state-changed事件来动态的打开或者关闭遮罩。这里之所以要加遮罩是因为远端流播放时接收一个div且其是一直存在的,为了将其隐藏便只能动态添加一个遮罩来显隐。

添加成员,将获取到到直播音视频添加到video-grid主视频网格中,同时给它添加点击事件,实现内容为和主视频控制按钮进行交换位置,交换方法在音视频内容中已讲述。

给播放器的member成员列表添加一个音视频的图标按钮,并通过判断远端是流否含有包含视频轨道来修改音视频按钮图片。

主播互动

和主播连麦互动到过程实际上是分为两步,第一步为切换直播间角色为“主播模式”,第二部为创建本地流让主播能够看到你。

我们将其封装到来AudienceClience类中,其方法为:先调用客户端对象到switchRole方法切换身份。然后创建本地音视频流,并设置好用户ID、打开音视频通道。

接着初始化本地流initialize(),并使用publish发布本地流,设置发布标志isPublished_位true,最后将音视频播放play在main-video容器中。

同样需要注意到时,异步请求到过程我们使用try/catch到方法进行兜住,方便检查错误。

退出直播间

退出直播间首先要取消本地到发布,然后调用客户端到leave方法离开房间,接着停止并关闭本地流,并将localStream_和isJoined_复原,最后对一些UI界面也进行复原。

具体代码请参考demo03。

注:更多内容请关注腾讯云的实时音视频

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实时音视频开发学习5 - 实现分享、音频和音量
trtc的实践功能主要谈及两个模块,一个是web端,另一个为小程序端。这二者分别阐述了trtc的通话模式、直播模式、实时屏幕分享、云端流录制与回放CDN直播回放。
金林学音视频
2020/08/24
1.6K0
实时音视频开发学习5 - 实现分享、音频和音量
实时音视频开发学习14 - 常见问题
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
金林学音视频
2020/08/30
2.7K0
实时音视频开发学习14 - 常见问题
实时音视频开发学习3 - 实现web端跑通知识储备
本节内容主要讲解如何快速使用SDK包,SDK集成方式,SDK目录结构解释以及在web端和小程序端进行跑通。
金林学音视频
2020/08/21
1.6K0
实时音视频开发学习3 - 实现web端跑通知识储备
实时音视频开发学习1 - 音视频初体验
随着移动互联网速度越来越快的发展,实时音视频的发展也越来越收到重视。腾讯实时音视频(Tencent Real-Time Communication,TRTC)经过了10多年在网络音视频技术的发展与积累,并以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,使得开发者能快速实现低成本、低延时、高品质的音频互动解决方案。
金林学音视频
2020/08/20
4K0
实时音视频开发学习1 - 音视频初体验
使用TRTC Web SDK实现互动直播
以主播身份进入房间进行直播的场景跟实时音视频通话场景流程一样,请参考使用TRTC Web SDK实现实时音视频通话。本文主要介绍以观众身份进入直播间。
yuliang
2021/03/02
2.6K0
实时音视频 TRTC 常见问题汇总---集成接入篇
TRTC 的日志默认压缩加密,后缀为 .xlog。日志是否加密是可以通过 setLogCompressEnabled 来控制,生成的文件名里面含 C(compressed) 的就是加密压缩的,含 R(raw) 的就是明文的。
腾讯视频云-Zachary
2019/11/01
14.3K1
实时音视频 TRTC 常见问题汇总---集成接入篇
实时音视频开发学习11 - 小程序端二
小程序实现过程就不按照web端一步步拆分代码,而是直接讲解业务内容。核心内容可以参考trtc—room相关的API,本章内容会讲述大部分内容。地址:
金林学音视频
2020/08/28
1.3K0
实时音视频开发学习11 - 小程序端二
实时音视频开发学习6 - 云端录制与回放
云端录制在远程教育、秀场直播、视频会议、在线医疗等场景中都广泛应用,考虑到取证、质检、审核、存档和回放等需求,常需要将整个视频通话或互动直播过程录制并存储下来。腾讯云产品会将录制结果保存在云点播的资源管理的视频管理当中,在这里可以通过管理视频查阅视频的基本信息、视频发布或在浏览器中直接使用。
金林学音视频
2020/08/24
6.8K1
实时音视频开发学习6 - 云端录制与回放
你问我答 | 实时音视频TRTC(2021年5月-7月)
实时音视频TRTC 你问我答 第1季 本期共解答10个问题 Q1:移动端(Andriod/iOS)支持哪几种系统音量模式? 支持2种系统音量类型,即通话音量类型和媒体音量类型: 通话音量,手机专门为通话场景设计的音量类型,使用手机自带的回声抵消功能,音质相比媒体音量类型较差, 无法通过音量按键将音量调成零,但是支持蓝牙耳机上的麦克风。 媒体音量,手机专门为音乐场景设计的音量类型,音质相比于通话音量类型要好,通过通过音量按键可以将音量调成零。使用媒体音量类型时,如果要开启回声抵消(AEC
腾讯云音视频
2021/08/30
1.3K0
实时音视频开发学习12 - web端API
从2019年10月11日开始,浏览器端API版本从4.0.0版本升至4.6.2版本。中间修复unpublish成功后又重新publish失败报错问题,修复上行 peerConnection 断开时没有打印日志的问题修复 getTransportStats 接口返回的 rtt 值为 NAN 的问题等。增加了NETWORK_QUALITY 事件,增加部署环境自动检测,对createClient 增加 streamId userdefinerecordid 字段等优化了。优化上行码率调控逻辑,优化 switchRole 参数校验逻辑,优化上行网络质量计算逻辑,优化错误提示信息等。以下内容为web端的核心内容和代码中未体现的内容。
金林学音视频
2020/08/28
1.8K0
实时音视频开发学习12 - web端API
实时音视频开发学习10 - 小程序端一
小程序端双人通话、多人会议和语音聊天室三个功能。双人通话中实现1V1视频通话,在结合Web IM SDK可实现在线问诊或客服;语音聊天室能支持多人互动语音聊天,混音、混响等声音特效,适用于狼人杀、在线语音直播等社交场景;多人会议支持多路音视频通话、大小画面和屏幕分享等功能,适用于远程培训、在线教育等。
金林学音视频
2020/08/27
1.4K0
实时音视频开发学习10 - 小程序端一
使用TRTC Web SDK实现实时音视频通话
在使用 TRTC Web SDK 中,经常需要使用到两个对象,Client 客户端对象,Stream 流对象:
yuliang
2021/03/03
3.6K0
实时音视频开发学习13 - 小程序端API
小程序端API分为基础方法、发布订阅方法、视图控制方法、背景音乐方法、消息收发和其它。针对trtc-room组件来说可以传递一个config属性来打开音视频通话。
金林学音视频
2020/08/30
1.3K0
实时音视频开发学习13 - 小程序端API
实时音视频(TRTC)常见问题
一般而言,媒体音量指播放音乐、视频的声音、游戏声音等的音量,而通话音量指打电话的音量,视频通话的音量。
腾讯云-yyuanchen
2019/09/27
13.6K1
实时音视频 TRTC 常见问题汇总---咨询问题篇
TRTC 是腾讯云基于 QQ 十多年来在音视频通话技术上积累,结合腾讯浏览服务 TBS WebRTC 能力与腾讯实时音视频 SDK ,为客户提供多平台互通高品质可定制化的 实时音视频互通服务 解决方案。 (1)您可以通过“crtl+F”(win)、“command+F”(mac)搜索关键字。 (2)若没有您想要的问答,欢迎在评论区提问、留言和交流,笔者会定期解答疑惑。 (3)最新产品动态与变更以官网文档为准。
TRTC小百科
2021/09/16
8.8K2
实时音视频 TRTC 常见问题汇总---WebRTC篇
TRTC Web SDK 对浏览器的详细支持度,您可以查看 TRTC Web SDK 对浏览器支持情况。
腾讯视频云-Zachary
2019/11/15
23.1K3
实时音视频 TRTC 常见问题汇总---WebRTC篇
实时音视频 TRTC 常见问题汇总---咨询问题篇
支持的平台包括 iOS、Android、Windows(C++)、Windows(C#)、Mac、Web、Electron、微信小程序、Flutter,更多详情请参见 平台支持。
腾讯视频云-Zachary
2019/11/01
13.2K0
实时音视频 TRTC 常见问题汇总---咨询问题篇
实时音视频开发学习8 - 云端混流转码
云端混流主要用于CND直播观看和云端录制回放等场景中,需要将TRTC房间里的多路音视频流混合成一路。混流方式为MCU混流转码集群,其能将多路音视频流进行混合,并将最终生成的视频流分发给直播CDN和云端录制系统。
金林学音视频
2020/08/25
2K0
实时音视频开发学习8 - 云端混流转码
TRTC Android端开发接入学习之常见问题(十一)
V1和V2主要区别在于IM的SDK是否内嵌于TRTC中,V1线路是内嵌,而V2则可选,默认不打包IM的SDK包。V2在通话质量、线路规格、接入难度以及功能扩展上均比V1更有优势。
腾讯云-hongyang
2020/09/27
3.1K0
实时音视频开发学习7 - CDN直播与回放
CDN直播观看也叫“CDN旁路直播”,由于TRTC采用的是UDP协议进行传输音视频数据,而标准CDN则采用RTMP/HLS/FLV等协议进行数据传输,所以需要将TRTC中的音视频数据旁路到直播CDN中。
金林学音视频
2020/08/25
3.5K0
实时音视频开发学习7 - CDN直播与回放
推荐阅读
相关推荐
实时音视频开发学习5 - 实现分享、音频和音量
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档