【新知实验室-TRTC开发】实时音视频之web端云监工系统(Vue3+Element plus+TS+Pinia)

news2025/1/12 8:55:54

在线上线下一体化、虚拟现实加速融合的趋势下,音视频已经演进成一种基本能力,深刻变革了社会的交互方式。未来,音视频作为全真互联时代的重要基石,将持续推动互联网和实体产业的数字化创新与升级。

今天我们将体验腾讯的实时音视频TRTC开发,话不多说,一起开始吧:

一、入门:快速跑通Demo

1.1、进入TRTC

实时音视频:Real-Time Communication(RTC)可以实现用户的就近接入,提供网络低延迟低丢包率的音视频通信。

首先我们进入TRTC的控制台 https://console.cloud.tencent.com/trtc,可以看到腾讯云为我们提供了:免费的10000分钟音视频套餐包供我们开发使用,已经足够我们随意使用了!
在这里插入图片描述
首先点击左侧的应用管理,创建第一个应用实例:
在这里插入图片描述
由于是第一次创建,我们直接跟着系统指导进入快速跑通demo环节。

1.2、下载SDK和源码

我们选择开发的是Vue3+TS版本,点击git链接或者直接zip下载Web应用的demo包,下载好后,点击=>已下载下一步:
在这里插入图片描述
然后点击下一步,我们可以看到本应用的默认SDKAppID和密钥,把他复制下来就行,后面测试时才需要,如果你不慎忘记保存了,可以打开应用管理,也可以查看到自己的SDKAppID和密钥
在这里插入图片描述

保存好id和密钥后,我们用VScode打开刚刚下载好的web包,cd进入quick-demo-vue3-ts文件夹,这个文件夹就是vue3集成好TRTC的完整demo啦。
可以看到quick-demo-vue3-ts文件夹的完整目录如下:
在这里插入图片描述
在package.json的dependencies中我们可以发现官方给的vue3的demo技术栈有Vue3.2、Pinia2.0、element-plus2.1、vue-router4.0、TypeScript等技术栈,非常优质非常新,很适合学习使用:

"dependencies": {
    "aegis-web-sdk": "^1.35.25",
    "clipboard": "^2.0.10",
    "core-js": "^3.8.3",
    "element-plus": "^2.1.10",
    "mitt": "^3.0.0",
    "pinia": "^2.0.13",
    "trtc-js-sdk": "latest",
    "vue": "^3.2.13",
    "vue-i18n": "9",
    "vue-router": "^4.0.3",
    "vue3-clipboard": "^1.0.0"
  },

1.3、一步运行

如果没有安装yarn,则首先需要安装yarn,在终端输入:npm install -g yarn,然后在终端输入:npm start就可以自动下载安装依赖连接上服务啦,等待片刻,启动成功:
在这里插入图片描述

然后我们打开:http://localhost:8080,就可以看到官方demo已经被我们完美运行起来:
在这里插入图片描述

1.4、开始测试

测试时,我们需要在参数表单内填入1.2节复制好的SDKAppID和密钥,填入相应的文本框中,这个可以帮我们验证身份调用到TRTC的音视频服务,然后自定义自己的UserID,最后点击Join Room。
在这里插入图片描述
点击JoinRoom后我们就加入了60260房间,可以看到左方log日志打印出我们的昵称,然后可以看到哪些人进入了房间,并且可以复制链接邀请好友加入视频通话,demo运行成功!
在这里插入图片描述
不光可以视频通话,TRTC还提供了屏幕共享功能,点击Start Share Screen,然后点击分享屏幕或者单个窗口就可以啦!
在这里插入图片描述
而如果要实现多人通话,只需要复制链接邀请好友加入:
在这里插入图片描述
或者重新开个新页面,输入相同的room号码:
在这里插入图片描述

二、进阶:设计web端云监工系统

2.1、思路分析

2020年1月28日,央视频的三路信号受到千万网友的围观,在武汉开建的防治传染病医院火神山医院的建设工地,工人们在争分夺秒日夜奋战,网友们虽然不能到现场出把力,但也给自己加了一个身份:云监工,通过直播镜头去“监督”医院的建设进度。那么我们也可以开发一款云监工系统。

云监工系统主要功能就是用户功能和音视频功能,在音视频方面TRTC提供了一种高并发、低延时、高清流畅、安全可靠的全场景、全互动、全实时的音视频服务的终端服务。

  • 实时:音视频数据传输的延迟要达到“实时”的标准,也就是说延时要小于400ms,能够实现低延时无卡顿,在正常通信过程中基本感受不到延迟的存在。
  • 音视频:音视频数据传输,实时音视频通信通过服务端为中转节点,即时采集、渲染、处理、传输终端用户的图像、视频、音频数据进行,实现音视频流数据在终端节点间完成通信的过程。

这些特点正适合做一款云监控管理系统,用户登录管理员账号后,可以管理自己的监控设备,实时监控交通工厂通道区域设备等。
在这里插入图片描述
在这里插入图片描述

2.2、逻辑设计

2.2.1、AppID和密钥的保密

由于AppID和密钥高度敏感,被破解后极易导致资源被盗用,所以我们将SDKAppID和密钥放入后台服务器计算而不直接写在前端当中。

  • 数据设计:我们为每个用户设计一个用户名,密码,SDKAppID和密钥,用户名密码用来登录,SDKAppID和密钥用于连接TRTC服务(放在后台数据库当中或者给后台计算使用),这样就可以一定程度上保证SDKAppID和密钥在前端不直接显示。
  • SDKAppID、密钥的绑定:两者储存在后台,与用户的用户名和密码绑定,在本demo中暂时使用mock.js,模拟数据返回SDKAppID和密钥并调用音视频服务,后期将在后台直接开发SDKAppID和密钥的加密和音视频调用服务。

2.2.2、逻辑设计

由于时间紧凑,本次仅仅做一个小demo出来,所以本次需求仅仅做简单的分析,主要的需求有:

  • 登录:用户使用用户名和密码登陆到系统,前端页面对登录用户名和密码做一定的校验,包括为空校验、长度校验和格式校验,后台验证用户名和密码是否对应正确;
  • 监控:可以选择想要监控的地点(厂房、通道、大门),然后可以进入监控流,监控当前地点的情况,并且可以静音或者对讲。
  • 管理:管理摄像和麦克风设备。

2.2.3、项目技术栈

  • Vue 3.2.13
  • Element-Plus 2.1.10
  • Vue-Router 4.0.3
  • Pinia 2.0.13
  • Axios 1.2.0
  • Mitt 3.0.0
  • TypeScript、TRTC、Less-loader、…

2.2.4、项目结构

└─quick-demo-vue3-ts                   # 前端项目目录
    ├─public
    └─src
        ├─api                   # 服务AIP配置
        ├─assets                # 静态资源(包含 公共样式、图片)
        │  ├─css                
        │  └─image
        ├─components			# 组件封装
        │  ├─ui                 #一些次要ui组件
        │  other.vue   		    # 页面的主要组件
        ├─locales               # 语言模块
        │  ├─lang  				# 语言选项(目前有英文和中文)
        ├─router                # 路由
        ├─store                 # axios 封装
        ├─types                 # 一些类的封装
        ├─views                 # 页面视图
        └─utils                 # 工具包

2.2.5、项目配置

首先使用git克隆项目:git clone https://github.com/Heavenhjs/TRTC-demo.git,然后输入npm i自动配置项目相关依赖,然后输入npm run serve启动服务。也可以直接npm start

可能遇到的问题:使用 ’ npm i ’ 安装node_moduels的时候,终端出现错误:
Cannot read properties of null (reading ‘pickAlgorithm‘)
问题解决:终端输入: npm cache clear --force,清理cache之后再npm i

极简化下载与部署:CSDN专属链接

2.2.6、使用

在这里插入图片描述

在这里插入图片描述
经过使用,发现TRTC服务具有低延时,高清晰度,高抗丢包率,其可以支持多个视频监控,且只要有用户名和密码,可以多人多点实现监控功能,并且支持上万人同时观看也不会卡顿。

本次的实验只是一个非常简单的demo,很多功能和细节都没来得及完整设计,还待改进的有:

  • 区域监控的管理功能,包括新增、删除、控制、清晰度的选择等等;
  • 成员的角色管理和权限管理,不同角色能够访问到的监控权限不同,能够控制监控的权限也应该不同;
  • 云监工聊天区的设计,与即时通信协同使用;
  • 更完整舒适的UI交互;

总结

实时音视频 TRTC 主打全平台互通的多人音视频通话和低延时互动直播解决方案,提供小程序、Web、Android、iOS、Electron、Flutter、Windows、macOS 等平台的 SDK 便于开发者快速集成并与实时音视频 TRTC 云服务后台连通。

更有意思的是:通过腾讯云不同产品间的相互联动,还能简单快速地将实时音视频 TRTC 与即时通信 IM、云直播 CSS、云点播 VOD 和音视频内容安全VM等云产品协同使用,扩展更多的业务场景。

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

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

相关文章

vue3 antd table表格的增删改查(一)input输入框根据关键字搜索【后台管理系统纯前端filter过滤】

input输入框——关键字模糊搜索引言铺垫场景复现解决方案筛选的实现重置筛选信息优化处理(监听的实现)功能实现可能要用到的知识:vue3数据变化侦测&&信息筛选过滤.filter() .map() .forEach(). find()🔥vue3【watch检测/监…

[附源码]Python计算机毕业设计Django4S店汽车售后服务管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【服务器数据恢复】IBM服务器RAID控制器出错的数据恢复案例

服务器数据恢复环境: 北京某公司IBM X系列某型号服务器; 服务器上共8块硬盘组建raid5磁盘阵列; 服务器上部署有oracle数据库。 服务器故障&分析: 服务器在运行过程中,raid5磁盘阵列中有2块硬盘报警,服务…

CRM(Mapper层)详细代码

Mapper详细代码: DicValueMapper: package com.bjpowernode.crm.settings.mapper;import com.bjpowernode.crm.settings.domain.DicValue;import java.util.List;public interface DicValueMapper {/*** This method was generated by MyBatis Generato…

制作覆盖手绘图的导游地图,非常简单,你也可以

目录 1 前言 2 手绘地图的准备 3 下载软件 4 切图软件基本设置 5 配准设置 6 从平台取得上传切片所需要的3个参数 7 程序切片 8 增加位置点 1 前言 上一篇介绍了制作“简版导游地图”的步骤,真的是特别简单,如果提前准备好了文字材料&#xff0c…

PHP转Go,框架选什么?

文章目录内功心法PHP转Go,优选哪个框架?为什么?为什么不火?GoFrame特点优势:劣势:框架选型谁适合用GoFrame谁不适合用GoFrameGoFrame框架设计思想开发流程从0到1核心步骤总结视频一起学习这是一期会引起广泛…

即时通讯赛道开打信创牌,WorkPlus为何独树一帜?

近期,信创火了。 随着近期国家相关政策文件的推出,未来三年,党政信创、行业信创以及央国企信创的建设,将迎来全面加速。业内人士认为:“大信创”时代或已来临! 信创是什么? 信创,…

加载用户数据至用户维度表

目录 1.创建转换 2.配置表输入 3.配置表输入2 4.创建新转换 5.配置映射输入规范 6.配置数据库查询 7.配置数据库查询2 8.配置数据库查询3 9.配置过滤记录 10配置JavaScript代码 11.配置字段选择 12.配置映射输出规范 13.配置映射(子转换) 1…

JS进阶第一篇:手写call apply bind

文章目录手写call apply bind深入理解 call 方法手写call手写apply手写bind手写call apply bind 深入理解 call 方法 call 理解了,apply和bind就都迎刃而解了,他们都是大同小异。在此对call和apply不做过多的定义性解释,先来看下调用了call…

opencv阈值图像Threshold方法

图像阈值 固定阈值,自适应阈值,Otsu 二值化等 全局阈值和局部阈值 一、图像二值化 定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。 灰度值0&…

热门Java开发工具IDEA入门指南——导出项目到Eclipse

IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能是非常强大的。 上文…

打工人,这里有一份述职技巧,请查收

大家好,马上到年底了,有多少小伙伴正在期待着述职邮件,毕竟收到述职邮件,也就意味着有机会升职加薪。有没有跟糖糖一样,没收到邮件的? 工作要善于总结,也要善于表达,如何在限时内将…

跨平台应用开发进阶(四十)自定义插件及引用

文章目录一、前言二、插件制作三、离线插件集成应用示例四、拓展阅读一、前言 正如将可复用功能封装为自定义组件以供他人使用一样,在uni-app开发框架中提供了另一种形式的自定义插件,并可将该插件提交至uni-app插件市场。 二、插件制作 制作插件前&a…

前端 单元测试介绍 - 以及在项目中使用 (史上最全)

前言 我们前端开发过程中,编写测试代码,有以下这些好处: 更快的发现bug,让绝大多数bug在开发阶段发现解决,提高产品质量 比起写注释,单元测试可能是更好的选择,通过运行测试代码,观…

ARM 异常处理方式简单介绍

一、什么是异常 正常工作之外的流程都叫异常; 也就是说,除了用户模式和系统模式外,其他情况都是异常,见下图: 异常会打断正在执行的工作,并且一般我们希望异常处理完成后继续回来执行原来的工作&#xff…

3-azido-1-Propanamine,88192-19-2,3-叠氮基丙胺 性质特点有哪些?

●中文名:3-叠氮基丙胺,3-叠氮基-丙胺 ●英文名:3-azido-1-Propanamine ●外观以及性质: 西安凯新生物科技有限公司供应的:​3-azido-1-Propanamine为淡黄色或无色油状,含有叠氮基团,叠氮基可以…

Node.js 入门教程 23 使用 npm 的语义版本控制 24 卸载 npm 软件包 25 npm 全局或本地的软件包

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录Node.js 入门教程23 使用 npm 的语义版本控制24 卸载 npm 软件包25 npm 全局或本地的软件包23 使用 npm 的语义版本控制 如果 Node.js 软件…

第147篇 笔记-预言机(Oracle)

定义:区块链预言机是将区块链连接到外部系统的实体,从而使智能合约能够基于现实世界的输入和输出执行。 预言机为分散的 Web3 生态系统提供了一种访问现有数据源、遗留系统和高级计算的方式。去中心化预言机网络(DON)支持创建混合…

[附源码]计算机毕业设计springboot“小世界”私人空间

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Java学历、技术哪个更重要?学历不好还能进大厂吗?

Java程序员的入行门槛并不高,并不看重你的学历和其他各方面,唯一看重的就是你技术是否过硬,能否独立参与到企业级开发的项目中去,说简单点入行只看技术。但是你如果想要长远发展服日后走上管理岗位,最好还是自考个本科…