记一次vue3实现TRSP大华相机拉流的经历

一、背景

业务场景,大华IP相机安装在A城市某建筑场所,工控机是内网通过4G流量卡上网,工控机通过相机采集数据后做故障识别并上传故障信息到地面服务器,地面服务器在B城市。
现需要在地面服务器提供的WEB界面上实现IP相机实时拉流显示。由于A城市相机环境没有固定IP,这里采用了花生壳内网穿透,成功打通了外网访问渠道,在浏览器上直接输入trsp网址可以用PotPlayer进行拉流播放,证明链路是通的。接下来是解决TRSP在WEB上播放的问题。

第一次做这样的功能,技术栈用的是vue3,面向百度编程后,找到一篇文章:
vue播放rtsp流(简单易操作,无flash,跨平台,小白可入)
https://blog.csdn.net/yunbabac/article/details/120740547
按照文章的实施步骤一步步尝试,却未能解决问题。技术思路大概是要部署一个媒体服务器借助ffmpeg进行解码。浏览器页面上提供trsp地址,并将地址转发到这个媒休服务器,媒体服务器拿到地址后拉流解析并返回给浏览器。遇到的问题 要么浏览器报跨域问题,要么媒体服务器视频解码出错。

转换思路:有没有可能每家厂商的相机会有一些定制导致通用解码失败?于是按相机厂商名称加技术类继续百度找到以下文章,里面有提到用大华官网插件实现:
Vue3下的视频直播流方法(RTSP和HLS流)
https://blog.csdn.net/python_small_pan/article/details/124944602
还找了很多其他相关文章,但无一例外没有试验成功。

最后在网上找到一个rtsp2web的开源项目。
github网址:https://github.com/Neveryu/rtsp2web

二、准备工作

1、安装node并配置环境变量

在cmd窗口的任意路径输入 node -v和npm -v能返回版本信息。如下

>node -v
v14.18.3
>npm -v
6.14.15

2、安装ffmpeg并配置环境变量

在cmd窗口任意路径输入ffmpeg --version能返回版本信息,如下:

>ffmpeg -version
ffmpeg version N-92308-g32d021cfa6 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20181017
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
libavutil      56. 21.100 / 56. 21.100
libavcodec     58. 34.100 / 58. 34.100
libavformat    58. 19.102 / 58. 19.102
libavdevice    58.  4.106 / 58.  4.106
libavfilter     7. 38.100 /  7. 38.100
libswscale      5.  2.100 /  5.  2.100
libswresample   3.  2.100 /  3.  2.100
libpostproc    55.  2.100 / 55.  2.100

三、代理服务搭建

我用的是windows电脑
根据github上的文档一步步实现如下
1、用CMD窗口创建并进入目录D:\rtsp-demo\rtsp-server
2、在CMD窗口执行npm init --yes
在这里插入图片描述
3、安装rtsp2web模块
npm i rtsp2web 如下图:
在这里插入图片描述

4、在该目录下创建main.js文件,并输入以下代码

// main.js
const RTSP2web = require('rtsp2web')

// 服务端长连接占据的端口号;你也可以不传,默认是:9999
let port = 9999

// 创建一个RTSP2web服务实例出来
new RTSP2web({
  port
})

在这里插入图片描述
5、在cmd窗口中执行node main.js启动服务,如下图:
在这里插入图片描述
此时,我们已经在本地启动了一个端口为9999的服务。

四、客户端搭建(浏览器端)

1、下载rtsp2web的源码(主要用它的example示例),如下图:

在这里插入图片描述
将下载后的文件解压到D:/rtsp-demo目录,解压后目录结构如下:
在这里插入图片描述
用Vscode打开D:/rtsp-demo/rtsp2web-master目录,并编辑里面的example/index.html文件。
修改变量rtsp1的值为自己的rtsp路径。示意如下:
在这里插入图片描述
点击鼠标右键,选择Open with Live Server如下图:
在这里插入图片描述
看到运行的效果大失所望,因为页面上并没有显示出视频窗口。
其实之前找了好多篇指南,按所有步骤走完都是这样的结果。这不禁让人感到非常困惑,如果这些指南有错,为什么那么多网友去写这样的指南?如果指南没有错,是不是我忽略了什么呢?
经过一番苦苦思索,仍然没有结果。后来想起”穷则呼天“的古训,于是我向神祈祷,求祂则给我智慧悟性和灵感,使我能够找到问题的关键。解决办法看后面。
在这里插入图片描述
后来我经过反复查看官网文档,找到一个transportType,如文档所述,它是用来配置网络传输协议的,并且默认值是“无”。 也就是说直接根据文档描述的步骤,默认真的是什么都看不到的。
在这里插入图片描述
于是我尝试修改main.js中的代码,然后重新启用 node main.js服务。如下所示:
在这里插入图片描述
再次刷新网页,相机视频能够播放了。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 503. 下一个更大元素 II、42. 接雨水

下一个更大元素 II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数&…

【BI看板】superset api接口分析

superset 的图表功能已经非常强大了,但是要满足个性化需求,定制是比不可少的了。。。来吧,我们一起看看他的API。 自带api文档 URL 127.0.0.1:5000/swagger/v1 截图 是不是很熟悉,没错就是swagger了。 图表接口地址 127.0.0.1:…

如何用 JMeter 编写性能测试脚本?

Apache JMeter 应该是应用最广泛的性能测试工具。怎么用 JMeter 编写性能测试脚本? 1. 编写 HTTP 性能测试脚本 STEP 1. 添加 HTTP 请求 img STEP 2. 了解配置信息 HTTP 请求各项信息说明(以 JMeter 5.1 为例)。 如下图所示:…

大数据技术学习笔记(二)—— Hadoop 运行环境的搭建

目录 1 准备模版虚拟机hadoop1001.1 修改主机名1.2 修改hosts文件1.3 修改IP地址1.3.1 查看网络IP和网关1.3.2 修改IP地址 1.4 关闭防火墙1.5 创建普通用户1.6 创建所需目录1.7 卸载虚拟机自带的open JDK1.8 重启虚拟机 2 克隆虚拟机3 在hadoop101上安装JDK3.1 传输安装包并解压…

alsa音频pcm设备之i2c调试

i2cdetect 列举 I2C bus i2cdetect -l ls /dev/i2c* 列出I2C bus i2c-7 上面连接的所有设备,并得到i2c设备地址 i2cdetect -y 7 发现i2c设备的位置显示为UU或表示设备地址的数值,UU表示设备在driver中被使用. I2cdump i2c设备大量register的值 i2cdump -y 7 0x40 I2cset设置…

python爬虫分析基于python图书馆书目推荐数据分析与可视化

收藏关注不迷路 文章目录 前言一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、文章目录 前言 随着电子技术的普及和快速发展,线上管理系统被广泛的使用,有很多商业机构都在实现电子信息化管理,图书推荐也不例外&#xff0c…

【图结构从入门到应用】图的表示和遍历,图搜索算法详解与示例

1 图的概念 图是一种非常常见的数据结构,用于表示对象之间的关系。在计算机科学中,有许多不同的图类型,包括有向图(Directed Graph)和无向图(Undirected Graph)。图通常由节点(顶点&…

语雀崩了,免费送VIP6个月,赶紧薅!!

一、前言 在一个无聊的周一,下午浑浑噩噩的时候,一条公众号信息引起我的关注。 什么东西?语雀这种量级的产品也能崩? 看了一下还真是官方公众号发的!! 心里不由得出现,完蛋整个团队要打包遣…

计算机毕设 flink大数据淘宝用户行为数据实时分析与可视化

文章目录 0 前言1、环境准备1.1 flink 下载相关 jar 包1.2 生成 kafka 数据1.3 开发前的三个小 tip 2、flink-sql 客户端编写运行 sql2.1 创建 kafka 数据源表2.2 指标统计:每小时成交量2.2.1 创建 es 结果表, 存放每小时的成交量2.2.2 执行 sql &#x…

RetentionPolicy枚举类

包名package java.lang.annotation 作用 注释保留策略。此枚举类型的常量描述用于保留注释的各种策略。它们被使用与{ Retention}元注释类型一起指定注释要保留多长时间。 属性 SOURCE编译器将丢弃注释。CLASS注释将由编译器记录在类文件…

Docker网络与资源控制

Docker网络与资源控制 一、Docker网络模式1.1、Docker网络实现原理1.2、Docker的网络模式1.2.1、host模式1.2.2、Container模式1.2.3、None模式1.2.4、 Bridge模式1.2.5、自定义网络 二、资源控制2.1、CPU 资源控制2.1.1、设置CPU使用率上限2.1.2、进行CPU压力测试2.1.3、设置C…

vue首页多模块布局(标题布局)

<template><div class"box"><div class"content"><div class"box1" style"background-color: rgb(245,23,156)">第一个</div><div class"box2" style"background-color: rgb(12,233,…

霸王条款惹品牌争议,京东双11站在商家对立面?

作者 | 江北 来源 | 洞见新研社 双11活动第一天&#xff0c;京东就站上了风口浪尖。 与烘焙烤箱品牌海氏的话题接连登上微博热搜&#xff0c;海氏控诉京东滥用市场竞争地位&#xff0c;破坏市场竞争秩序。在海氏的声明中&#xff0c;京东的行为让吃瓜群众大开眼界&#xff1a…

智能井盖监测系统功能,万宾科技传感器效果

智能井盖传感器的出现是高科技产品的更新换代&#xff0c;同时也是智慧城市建设中的需求。在智慧城市建设过程之中&#xff0c;高科技产品的应用数不胜数&#xff0c;智能井盖传感器的出现&#xff0c;解决了城市道路安全保护着城市地下生命线&#xff0c;改善着传统井盖带来的…

Hive安装配置笔记

版本说明 hadoop-3.3.6&#xff08;已安装&#xff09; mysql-8&#xff08;已安装&#xff09; hive-3.1.3 将hive解压到对应目录后做如下配置&#xff1a; 基本配置与操作 1、hive-site <configuration><!-- jdbc连接的URL --><property><name>ja…

微信小程序菜单导航选中自动居中

菜单导航选中自动居中 示例库 代码片段

Android Studio模拟器/虚拟设备连接互联网的方法

如图&#xff0c;无线、网络都无法联网 找到本机的DNS 找到emu-launch-params.txt&#xff0c;添加DNS -dns-server 192.168.124.1 重启虚拟机&#xff0c;关闭无线

智慧公厕:打造更美好的城市生活环境

在信息技术迅猛发展的今天&#xff0c;智慧公厕作为一种创新的城市管理模式&#xff0c;正逐渐受到人们的关注。以物联网、大数据、人工智能为基础&#xff0c;智慧公厕正逐步改变传统公厕的面貌&#xff0c;为城市居民提供更便捷、舒适的公共服务。本文将以智慧公厕源头厂家广…

机械设计制造,设计行业图纸透明加密保护。防止内部终端核心文件数据、资料外泄

当下互联网时代&#xff0c;许多设计单位的设计图纸都是以电子文件的形式存在于终端电脑和服务器上。在图纸的设计生产过程中&#xff0c;必定会经过多个部门人员之手&#xff0c;此过程中就隐藏着巨大的风险。所以&#xff0c;设计单位需要使用专业的图纸加密软件来保护内部图…

【软考系统架构设计师】2021年系统架构师综合知识真题及解析

本文主要分享2021年下半年系统架构师综合知识历年真题以及本人在做题时的所思所想。题目序号有点混乱&#xff0c;可忽略 【01】.某计算机系统页面大小为4K&#xff0c;进程P1的页面变换表如下图所示&#xff0c;看P1要访问数据的逻辑地址为十六进制1B1AH,那么该逻辑地址经过变…