Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >uni-app/vue接入腾讯TRCT(一)---基础音视频

uni-app/vue接入腾讯TRCT(一)---基础音视频

作者头像
代码哈士奇
发布于 2022-05-11 07:02:46
发布于 2022-05-11 07:02:46
3.8K20
代码可运行
举报
文章被收录于专栏:dmhsq_csdn_blogdmhsq_csdn_blog
运行总次数:0
代码可运行

uni-app接入腾讯TRCT(一)—基础音视频

最近需要做一个类似于视频会议的项目,也是选用了腾讯云TRCT,原因:简单易用,打算和IM即时通信结合,可以做一个简易聊天加视频应用,这里是一个简单用法的demo

效果:

领取免费流量包

需要安装 trtc-js-sdk npm i trtc-js-sdk

文档地址

代码

test 代码在下面 主要配置 debug时候的加密

建议放到云函数 只获取加密后的结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
	<view class="content">
		当前显示<text>{{nowMain}}</text>
		<div style="width: 100vw;height: 30vh;" id="mine"></div>
		<view>
			<!-- <div id="own" v-show="nowMain!==user && localStream"  @click="playMain({id:user,stream:localStream})"  style="width: 24vw;height: 24vw;border: 1px solid blue;float: left;background-color: red;"
			  ></div> -->
			<div :class="{nowPlay:item.id===nowMain}" style="width: 24vw;height: 24vw;border: 1px solid blue;float: left;background-color: red;" v-for="item in list"
			  @click="playMain(item)" 
			 :key="item.id" :id="item.id"></div>
		</view>
		<input v-model="user" placeholder="用户名" />
		<button @click="create()">创建client</button>
		<button @click="join()">加入房间</button>
		<button @click="creatL()">初始化本地流</button>
		<button @click="push()">推送</button>
		<button @click="leave()">退出</button>
		
	</view>
</template>

<script>
	import genTestUserSig from '../../debug/test.js'
	import TRTC from 'trtc-js-sdk';
	export default {
		data() {
			return {
				title: 'Hello',
				client: null,
				user:"",
				localStream:null,
				list:[],
				nowMain:"无"
			}
		},
		onLoad() {
			
		},
		methods: {
			playMain(item){
				document.getElementById('mine').innerHTML = ""
				item.stream.play('mine');
				this.nowMain = item.id
				if(item.id!==this.user){
					this.localStream.play('own')
				}
				
				
				
				
			},
			create(){
				const userId = this.user;
				this.nowMain = this.user;
				const data = genTestUserSig(this.user)
				const {userSig} = data;
				const sdkAppId = genTestUserSig(this.user).sdkAppID
				const client = TRTC.createClient({
				  mode: 'rtc',
				  sdkAppId,
				  userId,
				  userSig
				});
				this.client = client
				client.on('stream-added', event => {
				  const remoteStream = event.stream;
				  console.log('远端流增加: ' + remoteStream.getId());
				  //订阅远端流
				  client.subscribe(remoteStream);
				});
				client.on('stream-subscribed', event => {
				  const remoteStream = event.stream;
				  console.log(1111111)
				  console.log('远端流订阅成功:' + remoteStream.getId());
				  this.list.push({id:`${remoteStream.getId()}`,stream:remoteStream})
				  // 播放远端流
				  this.$nextTick(()=>{
					   remoteStream.play(`${remoteStream.getId()}`);
				  })
				 
				  remoteStream.on('error', error => {
				    const errorCode = error.getCode();
					console.log(2222222222222)
					console.log("错误",err)
				    if (errorCode === 0x4043) {
				      // PLAY_NOT_ALLOWED,引导用户手势操作并调用 stream.resume 恢复音视频播放
				      // stream.resume()
				    }
				  })
				});
			},
			join(){
				this.client
				  .join({ roomId:1234 })
				  .then(() => {
				    console.log('进房成功');
				  })
				  .catch(error => {
				    console.error('进房失败 ' + error);
				  });
			},
			creatL(){
				const localStream = TRTC.createStream({ userId:this.user, audio: true, video: true });
				this.localStream = localStream
				
			},
			push(){
				this.localStream
				  .initialize()
				  .then(() => {
				   this.localStream.play('mine');
					 this.client.publish(this.localStream).then(() => {
					    // 本地流发布成功
						 console.log('推送成功');
					  });
				  })
				  .catch(error => {
				    console.error('初始化本地流失败 ' + error);
				  });
			},
			play(){
				this.localStream
				  .initialize()
				  .then(() => {
				    console.log('初始化本地流成功');
				    // 'local_stream' 是在 DOM 中的一个 div 标签的 ID
				    
				  })
				  .catch(error => {
				    this.console.error('初始化本地流失败 ' + error);
				  });
			},
			leave(){
				this.client
				  .leave()
				  .then(() => {
				    // 退房成功,可再次调用client.join重新进房开启新的通话。
				  })
				  .catch(error => {
				    console.error('退房失败 ' + error);
				    // 错误不可恢复,需要刷新页面。
				  });
			}
		}
	
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
	.nowPlay{
		border: 2px solid green;
	}
</style>

test.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import LibGenerateTestUserSig from './lib-generate-test-usersig-es.min.js';
/**
 * 腾讯云 SDKAppId,需要替换为您自己账号下的 SDKAppId。
 *
 * 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ) 创建应用,即可看到 SDKAppId,
 * 它是腾讯云用于区分客户的唯一标识。
 */

const SDKAPPID = 123456;
/**
 * 签名过期时间,建议不要设置的过短
 * <p>
 * 时间单位:秒
 * 默认时间:7 x 24 x 60 x 60 = 604800 = 7 天
 */

const EXPIRETIME = 604800;
/**
 * 计算签名用的加密密钥,获取步骤如下:
 *
 * step1. 进入腾讯云实时音视频[控制台](https://console.cloud.tencent.com/rav ),如果还没有应用就创建一个,
 * step2. 单击“应用配置”进入基础配置页面,并进一步找到“帐号体系集成”部分。
 * step3. 点击“查看密钥”按钮,就可以看到计算 UserSig 使用的加密的密钥了,请将其拷贝并复制到如下的变量中
 *
 * 注意:该方案仅适用于调试Demo,正式上线前请将 UserSig 计算代码和密钥迁移到您的后台服务器上,以避免加密密钥泄露导致的流量盗用。
 * 文档:https://cloud.tencent.com/document/product/647/17275#Server
 */

const SECRETKEY = 'xxx';
/*
 * Module:   GenerateTestUserSig
 *
 * Function: 用于生成测试用的 UserSig,UserSig 是腾讯云为其云服务设计的一种安全保护签名。
 *           其计算方法是对 SDKAppID、UserID 和 EXPIRETIME 进行加密,加密算法为 HMAC-SHA256。
 *
 * Attention: 请不要将如下代码发布到您的线上正式版本的 App 中,原因如下:
 *
 *            本文件中的代码虽然能够正确计算出 UserSig,但仅适合快速调通 SDK 的基本功能,不适合线上产品,
 *            这是因为客户端代码中的 SECRETKEY 很容易被反编译逆向破解,尤其是 Web 端的代码被破解的难度几乎为零。
 *            一旦您的密钥泄露,攻击者就可以计算出正确的 UserSig 来盗用您的腾讯云流量。
 *
 *            正确的做法是将 UserSig 的计算代码和加密密钥放在您的业务服务器上,然后由 App 按需向您的服务器获取实时算出的 UserSig。
 *            由于破解服务器的成本要高于破解客户端 App,所以服务器计算的方案能够更好地保护您的加密密钥。
 *
 * Reference:https://cloud.tencent.com/document/product/647/17275#Server
 */

function genTestUserSig(userID) {
  const generator = new LibGenerateTestUserSig(SDKAPPID, SECRETKEY, EXPIRETIME);
  const userSig = generator.genTestUserSig(userID);
  return {
    sdkAppID: SDKAPPID,
    userSig
  };
}

export default genTestUserSig

lib-generate-test-usersig-es.min.js 可以去官方demo取 这里我丢到云存储

https://vkceyugu.cdn.bspapp.com/VKCEYUGU-63c1dd6f-ae8d-423b-8895-3513ae884680/d095a028-7bb5-45b1-9981-af799759c35b.js

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
import TRTC from 'trtc-js-sdk'; 哥这一步就报错了
import TRTC from 'trtc-js-sdk'; 哥这一步就报错了
11点赞举报
我也是,报错,老铁,你这个 解决了吗?
我也是,报错,老铁,你这个 解决了吗?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
使用TRTC Web SDK实现实时音视频通话
在使用 TRTC Web SDK 中,经常需要使用到两个对象,Client 客户端对象,Stream 流对象:
yuliang
2021/03/03
3.6K0
从零开始创建一个超简单的TRTC音视频通讯程序(web篇)
WebRTC 技术由 Google 最先提出,目前主要在桌面版 Chrome 浏览器、桌面版 Safari 浏览器以及移动版的 Safari 浏览器上有较为完整的支持,其他平台(例如 Android 平台的浏览器)支持情况均比较差。
F颜
2020/06/19
4.5K7
vue使用TRTC Web SDK实现多人会话场景
基本的对话场景请参考 使用TRTC Web SDK实现实时音视频通话 。本文主要讲述 vue 使用 TRTC Web SDK 来实现多人会议的功能,废话不多说直接上代码:(注意下方代码中 sdkAppId 请使用自己的)
yuliang
2021/03/03
2.7K0
关于 TRTC (实时音视频通话模式)在我司的实践
腾讯实时音视频(Tencent Real-Time Communication,TRTC)将腾讯 21 年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
发声的沉默者
2021/06/14
1.9K0
关于 TRTC (实时音视频通话模式)在我司的实践
TRTC学习之旅(二)-- 使用vue+ts集成TRTC实现多人会议室
根据上回学习了官方TRTC demo之后,已经了解了一个基础的多人会议室创建的流程,接下来我需要将自己学到的转换为自己能够运用的。
黑眼圈云豆
2020/06/24
4K3
TRTC学习之旅(二)--  使用vue+ts集成TRTC实现多人会议室
VUE 实时音视频页面老是报错
有没有大神可以帮忙看看 metting/lib-generate-test-usersig.min.js' //导入sdk import TRTC from "trtc-js-sdk"; export default { data () { return { userId: 'user_' + parseInt(Math.random() * 100000000),//用户id --可更改 roomId: 888888,//房间号--加入相同房间才能聊 client: '',//客户端服务 remoteStream: '',//远方播放流 localStream: '',//本地流 } }, mounted () { //测试用,所以直接创建了,其他需求可自行更改 this.createClient(this.userId) },
用户7517610
2020/07/02
4.2K1
云终端系列(一)—— 实时音视频Web端接入体验(Vue基础音视频通话篇)
这个系列呢,主要给各位观众老爷看看目前有较大趋势的SaaS应用的SDK在各种主流Web终端的使用姿势和异常分析,如果想要纯粹了解开发的或者云原生,云开发的可以去往另一个系列——云开发系列。
楚歌
2020/11/23
4.3K1
TRTC零基础入门之Web篇(一)
在建立这个在线课堂应用过程中,可能会使用到腾讯云的IM、云直播等服务,以及对应安卓端SDK,下面将通过三篇文章来记录这个过程,本文为第一篇。
天上云间
2020/12/20
4.2K2
TRTC零基础入门之Web篇(一)
IM腾讯实时音视频小记
测试使用script引入 也可以使用npm(https://cloud.tencent.com/document/product/647/78731)
游魂
2023/10/16
4290
IM腾讯实时音视频小记
体验腾讯云音视频
首次开通腾讯云音视频免费赠送10000分钟的免费试用套餐包,包含了视频通话、语音通话、视频互动直播、语音互动直播这些模块,另外说明一下腾讯云音视频是按照 1 : 2 : 4 : 9 : 16 : 36 分别抵扣语音、标清、高清、超高清、2K和4K时长,例如1分钟高清视频时长扣除4分钟免费套餐包时长。
就叫7620521吧
2022/11/25
8.2K0
使用TRTC Web SDK实现互动直播
以主播身份进入房间进行直播的场景跟实时音视频通话场景流程一样,请参考使用TRTC Web SDK实现实时音视频通话。本文主要介绍以观众身份进入直播间。
yuliang
2021/03/02
2.6K0
TRTC学习之旅(一)--多人聊天室web篇(官方demo)
大家好,我是刚入坑TRTC的小菜鸡,黑圆圈云豆。因为我的主要技术方向是web,所以我就从基于web开发的TRTC demo进行学习和知识分享。
黑眼圈云豆
2020/06/19
4.7K0
TRTC学习之旅(一)--多人聊天室web篇(官方demo)
从零开始创建一个超简单的TRTC音视频通讯程序(小程序篇)
出于政策和合规的考虑,微信暂未放开所有小程序对实时音视频功能(即 <live-pusher> 和 <live-player> 标签)的支持:
F颜
2020/06/18
2.1K0
【最佳实践】巡检项:实时音视频 (TRTC) 检查WebSDK 进房模式(mode)和角色(role)是否一致
在腾讯实时音视频(TRTC)Web端SDK的使用中,对于mode选择为'rtc'的情况,如果配置角色为观众(audience),则会导致无法正常上行音视频,同时也不会有任何的报错信息。
jackwlchen
2023/05/08
3060
实时音视频开发学习9 - 进房权限和画质
开启进房权限的目的是为了避免非会员模式能够进入高级房间,同时解决客户端限制被破解的问题。目前进房权限在iOS、Android、Windows、Electron、微信小程序和Chrome 浏览器都支持。
金林学音视频
2020/08/27
1.8K0
实时音视频开发学习9 - 进房权限和画质
微信小程序TRTC使用custom自定义面板(实现篇)
本文主要是使用 custom 面板实现直播互动,上下麦操作。如有疑问可参考 微信小程序TRTC使用custom自定义面板(理解篇)。本文只是简单演示如何实现主播与观众进行连麦互动,在实际中,通常是有主播端发起与粉丝进行直播互动,通过粉丝来接受,进行连麦。发送这种消息可以使用IM(即时通讯)完成。
yuliang
2021/03/16
1.4K0
TRTC学习之旅(三)-- 使用vue+ts集成互动直播
上次我们已经用vue+ts实现了多人会议室的搭建,这次我们继续在上次项目的基础上,实现互动直播功能。
黑眼圈云豆
2020/07/01
2.2K2
TRTC学习之旅(三)-- 使用vue+ts集成互动直播
Vue+koa2开发一款全栈小程序(6.个人中心)
如果报错(往往因为mysql的版本8.0什么的,加密方式导致初始化脚本报错),解决办法
玩蛇的胖纸
2018/10/15
6220
网站在线客服系统实时语音视频聊天实战开发,利用peerjs vue.js实现webRTC网页音视频客服系统
webRTC机制和peerjs库的介绍在其他博客中已经有了很多介绍,这里我直接搬运过来
唯一Chat
2023/02/17
1.9K0
网站在线客服系统实时语音视频聊天实战开发,利用peerjs vue.js实现webRTC网页音视频客服系统
iOS音视频接入 - TRTC多人视频会议
官方SDK中提供了可复用的UI和封装了TRTCCloud的model,具体位置见下图。
小明同学接音视频
2020/10/15
2.5K0
iOS音视频接入 - TRTC多人视频会议
推荐阅读
相关推荐
使用TRTC Web SDK实现实时音视频通话
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验