vue3_对接腾讯_实时音视频

news2024/11/16 23:41:52

项目需要对接腾讯的实时音视频产品,我这里选择的是多人会议,选择其他实时音视频产品对接流程也一样,如何对接腾讯实时音视频的多人会议产品,从开通服务到对接完成,一 一讲解。

一、开通腾讯实时音视频

1.腾讯实时音视频简介

腾讯云的实时音视频TRTC,多端支持,对接很方便,他支持的开发技术也都是最新的。

腾讯实时音视频(Tencent Real-Time Communication,TRTC),将腾讯多年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。

多人音视频通话方案 依靠腾讯云覆盖全球的专线网络,全球均可互通,提供覆盖手机、桌面全平台的客户端 SDK 以及云端 API,终端用户还可以在微信、QQ、企业微信的小程序中使用 TRTC 服务,Web 网页也可轻松使用。

低延时互动直播方案 凭借行业领先的网络与音视频技术,结合腾讯云优质的节点资源,帮助开发者搭建卡顿率更低、延时1秒以内的互动直播,让直播走进 CDN 2.0 时代。

 2.创建应用

我开通的是多人会议,如果你开通实时音视频其他的产品,他的小程序对接方式应该也是一样的。

①注册腾讯云账号

点击链接,腾讯云官网注册https://cloud.tencent.com/点击左上角免费注册按钮。

②开通实时音视频产品

进入腾讯云首页,鼠标悬浮在左上角的 产品 按钮:

找到实时音视频进行点击,然后点击免费试用。

 此时进入了控制台,点击立即开通。

 创建应用:

我这里选的是多人会议,使用的入门版。

​ 创建成功后,进入了详情页面,记录 SDKAppID  和  SDK 密钥,这个两个参数对接时会用。

但是此时 多人会议 服务还没有开通,我们需要领取体验。也是在详情页面。

点击领取体验, 有免费的7天试用。

 

注:不是完全免费,会产生费用。

 点击确认领取,开通成功,此时服务状态显示可集成。

 


二、集成腾讯实时音视频

我这里对接的是多人会议,其他产品流程相同。

1.新项目集成多人会议

如果你的项目还没有开始,那么集成只需要直接下载多人会议源码,在那个基础上进行更改和开发。(这里推荐使用跑通Demo的源码,直接下载后在那个基础上进行开发。不推荐使用快速接入,因为他的页面不一定符合你公司的要求,你肯定是要改他的源码的,比如添加删减功能,或者改颜色什么的。如果不需要对他进行这些更改,可以使用快速接入)。

他的demo功能比较全面,包括了前端创建房间等,是可以后端进行房间创建的,看你是否需要保留他所有的功能。

腾讯多人会议源码克隆+流程icon-default.png?t=O83Ahttps://cloud.tencent.com/document/product/647/107225根据文档的步骤一步一步进行即可,然后在这个基础上开发自己的业务代码。

2.老项目集成多人会议

我的项目是 vue3+js+vuex+less  腾讯多人会议产品是 vue3+ts+pinia+scss ,因为我的项目已经开发完了,才开始集成腾讯多人会议,这就导致集成时报了很多错误,下面一起看一下有哪些注意的点。

需要先使用快速接入,将源码npm包和pinia下载下来:

npm install @tencentcloud/roomkit-web-vue3 pinia --save

main.js引入

import { createPinia } from 'pinia';

const app = createApp(App);
// 注册 pinia
app.use(createPinia()); 
app.mount('#app')

引用 TUIRoomKit 组件

新建一个vue页面,引入:

<template>
  <ConferenceMainView></ConferenceMainView>
</template>
<script setup>
import { ConferenceMainView } from '@tencentcloud/roomkit-web-vue3';
</script>

此时如果后端已经创建会议,就是使用进入已有会议,否则使用创建新会议:

进入已有会议

// 注意包的名称,如果您使用 vue2 版本请更改包名为 @tencentcloud/roomkit-web-vue2.7
import { conference } from '@tencentcloud/roomkit-web-vue3';
const joinConference = async () => {
    await conference.login({    
        // 获取 sdkAppId 可参考文档开通服务部分,https://write.woa.com/document/139678220708134912#d9d2b8d1-f19f-441b-a436-457748c94997
        sdkAppId: 0,
        // 用户在您业务中的唯一标示 Id
        userId: '',
        // 本地开发调试可在 https://console.cloud.tencent.com/trtc/usersigtool 页面快速生成 userSig, 注意 userSig 与 userId 为一一对应关系
        userSig: '', 
    });
    await conference.join('123456', {
      isOpenCamera: false,
      isOpenMicrophone: false,
    });
}
joinConference()

发起新会议

// 注意包的名称,如果您使用 vue2 版本请更改包名为 @tencentcloud/roomkit-web-vue2.7
import { conference } from '@tencentcloud/roomkit-web-vue3';
const startConference = async () => {
    await conference.login({    
        // 获取 sdkAppId 可参考文档开通服务部分,https://write.woa.com/document/139678220708134912#d9d2b8d1-f19f-441b-a436-457748c94997
        sdkAppId: 0,
        // 用户在您业务中的唯一标示 Id
        userId: '',
        // 本地开发调试可在 https://console.cloud.tencent.com/trtc/usersigtool 页面快速生成 userSig, 注意 userSig 与 userId 为一一对应关系
        userSig: '', 
    });
    await conference.start('123456', {
      roomName: 'TestRoom',
      isSeatEnabled: false,
      isOpenCamera: false,
      isOpenMicrophone: false,
    });
}
startConference()

运行方式,就是启动你的项目,比如我的是 npm run serve 。

快速接入步骤链接icon-default.png?t=O83Ahttps://cloud.tencent.com/document/product/647/81962

快速接入只能简单的控制一些按钮显隐,无法修改颜色等,他的主题色只能修改黑白,无法将会议的蓝色改为你的颜色,所以还需要继续使用界面定制。

界面定制

我们使用的是UIKit 源码导出修改界面微调两种方法的结合使用。

首先使用界面微调方法隐藏多余功能按钮,有很多邀请参加会议按钮可以隐藏。

在刚才引入快速接入腾讯源码的那个页面。

// 注意包的名称,如果您使用 vue2 版本请更改包名为 @tencentcloud/roomkit-web-vue2.7
import { conference, FeatureButton } from '@tencentcloud/roomkit-web-vue3';
conference.hideFeatureButton(FeatureButton.SwitchTheme);

可以隐藏的按钮如下:

接下来继续进行UIKit 源码导出修改:

首先导出UIKit 源码:

  node ./node_modules/@tencentcloud/roomkit-web-vue3/scripts/eject.js

源码导出后,在您指定的项目路径中会新增 TUIRoomKit 源码。此时,您需要手动将 ConferenceMainView 组件,conference 对象的引用从 npm 包地址更改为 TUIRoom 源码的相对路径地址。

- import { ConferenceMainView, conference } from '@tencentcloud/roomkit-web-vue3';
// 替换引用路径为 TUIRoomKit 源码的真实路径
+ import { ConferenceMainView, conference } from './src/components/TUIRoom/index.ts';

接下来配置 UIKIT 源码开发环境:

因为我的是vue3+webpack+js,但是这里选择最接近的就是vue+webpack+ts

因为我的项目是js的,此时运行报错,如果你的项目是ts的跳过这个步骤;

执行命令,将js改为ts:

vue add typescript

如果此时报错vue既不是内部命令也不是外部命令,你需要全局下载一下vue,执行:

npm install -g vue

使用 vue –V,如果显示vue版本号,则成功,继续执行:

vue add typescript

此时运行还是会报错,因为项目有冲突,这时不要慌,一个一个问题去解决:

一起来解决这几种问题:

1)main.ts报错

里面引入的全局组件,都报错了,这是因为,我的项目是js,这时如果在main.ts引入,就需要类型声明,在src目录下创建文件,把你的全局组件添加进去 :

env.d.ts

declare module '@/components/你的组件名字'
declare module '@/components/你的组件名字'

2)scss报错

因为我的项目用的less,此时需要下载scss,执行命令:

npm install sass sass-loader -S -D

3)腾讯源码报错

如果腾讯的源码报错,TUIRoom文件夹里面的文件报错,找到报错点,进行注释,如果不影响项目流程,是用不到的功能,则没事。

如果是用到的功能报错,并且自己不会解决,那就在腾讯提交工单,会有人回复解答问题。

腾讯遇到问题工单提交页面icon-default.png?t=O83Ahttps://cloud.tencent.com/online-service?from=doc_647

3.腾讯源码修改

颜色修改

会议里面有一个更换皮肤,但是他只是黑白主题色更换。

如果你想将里面的蓝色改为其他颜色,比如绿色,需要改两个地方。

1)首先把这两个文件里面的蓝色改为绿色

2)其他的就需要一个一个改了,比如我想改这个按钮的颜色

想把绿色改为粉色。

首先全局搜索“声音设置”,然后找到其对应的英文:

然后全局搜索“Audio settings”,找到按钮位置,

点击进入文件,在这个文件内搜索,settingTabsTitleList :

更改这个样式的颜色:

改为粉色:

更改成功:

结束会议跳转到我们的页面的逻辑修改

找到这个文件,EndControlPC.vue :

在这部分添加你的跳转逻辑:

 找到这两个方法,添加我们的逻辑,会议结束或者离开会议时,跳转到我们项目的页面:

 handleEndLeaveClick添加离开逻辑方法和dismissRoom方法相同,记得添加。

如果还需要更改其他的地方,根据这个文件夹的提示找到相应的功能文件进行修改即可:

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

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

相关文章

适用于计算机视觉的机器学习

使用筛选器将效果应用于图像的功能在图像处理任务中非常有用&#xff0c;例如可能使用图像编辑软件执行的任务。 但是&#xff0c;计算机视觉的目标通常是从图像中提取含义或至少是可操作的见解&#xff0c;这需要创建经过训练以基于大量现有图像识别特征的机器学习模型。 卷积…

Unet改进30:添加CAA(2024最新改进方法)|上下文锚定注意模块来捕获远程上下文信息。

本文内容:在不同位置添加CAA注意力机制 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 遥感图像中的目标检测经常面临一些日益严峻的挑战,包括目标尺度的巨大变化和不同的测距环境。先前的方法试图通过大核卷积或扩展卷积来扩展主干的空间感受野来解决这…

cfs三层靶机——内网渗透

目录 1、环境地址 2、安装教程 3、配置虚拟机网卡 4、网络拓扑 5、安装宝塔 6、渗透测试 7、CentOS7 8、ubuntu 1、生成木马并上传 2、在kali上开启监听 3、回到蚁剑&#xff0c;运行木马 4、制作跳板 1、添加路由 2、查看路由 3、配置代理 4、配置kali的代理&…

第九届“创客中国”生成式人工智能(AIGC)中小企业创新创业大赛圆满落幕

9月5日,第九届“创客中国”生成式人工智能(AIGC)中小企业创新创业大赛在南昌降下了帷幕。工业和信息化部网络安全产业发展中心(工业和信息化部信息中心)主任付京波;江西省工业和信息化厅党组成员、副厅长郭启东;南昌市委常委、市委秘书长、办公室主任赵捷;市中小企业局党组书记…

MFC工控项目实例之十二板卡测试信号输出界面

承接专栏《MFC工控项目实例之十一板卡测试信号输入界面》 1、在BoardTest.h文件中添加代码 CButtonST m_btnStart[16],m_btnStart_O[16];2、在BoardTest.cpp文件中添加代码 UINT No_IDC_CHECK_O[16] {IDC_CHECK16,IDC_CHECK17,IDC_CHECK18,IDC_CHECK19,IDC_CHECK20,IDC_CH…

Idea 创建 Maven项目的时候卡死

文章目录 一、Archetype 和 Catalog1.1 Archetype&#xff08;原型&#xff09;1.2 Catalog&#xff08;目录&#xff09; 二、可能遇到的问题2.1 问题描述2.2 原因分析2.3 解决方案 参考资料 一、Archetype 和 Catalog 1.1 Archetype&#xff08;原型&#xff09; Archetype…

vue3+ant design vue实现文件上传(阿里云oss)~

1、效果图 2、自定义上传 <a-upload v-model:file-list"fileList" name"导入员工" action"" :customRequest"upDown" :beforeUpload"beforeUpload" :onChange"handleChange" remove"removeFile" ac…

【自然语言处理】实验一:基于NLP工具的中文分词

目录 前言 1. 导入jieba分词器 2. 用精确模式进行中文分词 3. 用全模式进行中文分词 4. 用搜索引擎进行中文分词 5. 利用 lcut返回结果列表(list) 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &a…

Typora调整图片大小的两种方式:zoom或width/height

目录 01 zoom方式02 width/height方式2.1 width方式 2.2 height方式 01 zoom方式 语法: <img src"your-image-url" style"zoom:your-zoom-integer"/> 示例&#xff1a;将图片(./image/market.jpg)调整为原图减少50%大小的命令为&#xff1a; …

解决 Ubuntu 20.04 上 Fail2Ban 启动失败问题:指定 systemd 后端

问题描述 服务器Ubuntu 20.04开启fail2ban失败&#xff0c;通过journactltl -f查看日志发现错误ERROR Failed during configuration: Have not found any log file for sshd jail。大致的原因就是fail2ban找不到sshd的日志文件。 Sep 09 09:52:17 test systemd[1]: Starting …

时间控制器

前言&#xff1a; 在web自动化测试中未免会遇到时间控制器&#xff0c;下面介绍三种实现方式&#xff1b;亲测成功&#xff1b; 时间控件&#xff1a; 第一种&#xff1a;通过点击和if语句联合使用 self.base_click(start_date_out) time.sleep(2) self.base_click(start_da…

【Java 输入流详解:局部与全局定义及资源管理】

Java 输入流详解&#xff1a;局部与全局定义及资源管理 在Java编程中&#xff0c;输入流&#xff08;如Scanner类&#xff09;是读取用户输入的常用方式。通过Scanner&#xff0c;可以方便地读取不同类型的数据&#xff0c;比如整数、字符串等。作为基于输入流的工具&#xff0…

【python】数据结构与算法简介及单链表实现

数据结构和算法 简介: ​ 数据结构是存储和组织数据的一种方式,算法是位实现业务目的的各种方法和思路,作用是大大提升程序性能 1.算法的特性: ​ 1.独立性: 算法是独立存在的一种解决问题的方法和思想对于算法而言;实现的语言并不重要&#xff0c;重要的是思想;算法可以有…

【中间件】-容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么&#xff1f; K8s的架构原理 控制平面(Control plane) kube-apiserver etcd kube-scheduler kube-controller-manager cloud-controller-manager 小结 节点组件(Node) container runtime Pod kubelet ku…

视频加密软件哪个最好用?怎么对视频文件设置加密?公司视频文件加密的最佳选择!

视频文件是企业信息传递与存储的重要载体&#xff0c;这些视频文件不仅涵盖了员工培训资料、产品演示视频、客户沟通记录等关键业务内容&#xff0c;还可能包含商业秘密、技术专利等敏感信息。 因此&#xff0c;确保视频文件的安全性&#xff0c;防止未经授权的访问、篡改或泄…

7.1图像平移

目录 实验原理 示例代码&#xff11; 运行结果&#xff11; 示例代码&#xff12; 运行结果&#xff12; 实验原理 OpenCV中&#xff0c;图像平移是一种基本的几何变换&#xff0c;指的是将图像中的每一个像素点沿着水平方向或垂直方向移动一定的距离。图像平移不改变图像…

C++位图的实现与详解

1.位图概念 在讲解位图之前我们先来看一道很经典的面试题。 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。 我们有以下两种种解决方法&#xff1a; 1. 遍历&#xff0c;时间复杂度O(N)。&#xff0…

如何在红米手机中恢复已删除的照片?(6 种方式可供选择)

凭借出色的相机和实惠的价格&#xff0c;小米红米系列已成为全球知名品牌。但是&#xff0c;最近有些人抱怨他们在 红米设备上丢失了许多珍贵的图片或视频&#xff0c;并希望弄清楚如何从小米手机恢复已删除的照片。好吧&#xff0c;在小米设备上恢复已删除的视频/照片并不难。…

RK3576芯片在智能家居里中型智慧屏产品的应用方案分析

智能家居在近年来得到了快速发展&#xff0c;AI技术不断发展&#xff0c;人机交互十分成熟&#xff0c;各种家电也都迎来了智能化浪潮&#xff0c;智能家居为人们提供了优秀的产品体验&#xff0c;受到主流消费者的青睐&#xff0c;智能家居里的中型智慧屏产品也随之兴起。 瑞芯…

HTTrack

--不破不立 HTTrack 是一个免费开源的网站离线浏览器。通过它可以将整个网站下载到本地的某个目录&#xff0c;包括 html、图片和脚本以及样式文件&#xff0c;并对其中的链接进行重构以便于在本地进行浏览。 1.官网下载地址&#xff1a;https://www.httrack.com/page/2/en/in…