通过React实现萤石摄像头rtsp地址格式的视频流的web展示

首先,我们需要拿到rtsp格式的流地址(rtsp://admin:[password]@[ip]),其中

password:设备底下的6位数验证码

ip:设备的ipv4地址

这里拿到ip的方式可以直连网线和绑定wifi两种方式

然后下载PC端的萤石工作室(下载中心 - 萤石服务中心 - 萤石官网 - EZVIZ)

进行登录后,点击设备管理 -> 高级配置 -> 网络

这样我们就拿到了完整的rtsp格式的地址,那么我们就可以通过VLC(Download VLC media player - free - latest version (softonic.com))去测试一下,

点击媒体 -> 打开网络串口 -> 输入地址 -> 播放

没有意外的话就能成功播放啦

下面咱们开始重头戏:

由于在现代浏览器里面不支持直接播放rtsp格式的地址,所以必须进行转流,在查阅大量资料后,选择基于ffmpeg的node后端推流方案 + 基于jspmg的前端视频展示的方案:

后端:基于ffmpeg的node后端推流方案

1.首先下载ffmpeg(Builds - CODEX FFMPEG @ gyan.dev)

下载这四个中任意一个均可,我选择的是倒数第二个,因为他是稳定版而且没有多余的包 

然后配置环境变量,能查找到安装成功即可,忘记怎么配置的话,可以看看这篇博客回忆起来(http://t.csdnimg.cn/HyovN)

2.接下来我们写一个node项目

1)在一个新建文件夹里,初始化一个node项目

npm init

2)安装node-rtsp-stream库

npm install node-rtsp-stream

3)在根目录下编写一个server.js的文件,然后在package.json里面的scripts配置"start": "node server.js"

const Stream = require('node-rtsp-stream');// Name of the stream, used to identify it in the API
new Stream({name: 'socket',streamUrl: 'rtsp://admin:密码@ip',wsPort: 9999,// ffmpeg 的一些配置参数,比如转换分辨率等,大家可以去 ffmpeg 官网自行查询ffmpegOptions: {'-stats': '','-r': 20,'-s': '1280 720'}
});

前端:基于jspmg的前端视频展示

我们创建一个react项目,确保安装了node.js,

1.创建react项目

npx create-react-app my-app

2.运行项目 

cd my-app
npm start

3.编码

App.js:

import './App.css'
import React, { useEffect } from "react";
import JSMpeg from "@cycjimmy/jsmpeg-player";export default function JsmpegPlayer() {useEffect(() => {// 根据你后端 RTSP 推流服务转的 WebSocket 地址修改new JSMpeg.VideoElement('#video', 'ws://localhost:9999');}, []);return (  <div className='App'><h1>Jsmpeg Player</h1><div id="video" className='video-container'></div></div>);
}

App.css:

.App {text-align: center;width: 100%;height: 100%;
}.video-container {  width: 1500px;  height: 1500px;  
}

完成上面的所有步骤之后,使用npm start分别启动这两个项目就好啦!!!

希望这些对你有所帮助,如果你觉得有用的话,欢迎点赞收藏起来,方便下次浏览查阅呦

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Datawhale X 李宏毅苹果书 AI夏令营 Task1笔记

Datawhale X 李宏毅苹果书 向李宏毅学深度学习&#xff08;进阶&#xff09; 是 Datawhale 2024 年 AI 夏令营第五期的学习活动&#xff08;“深度学习 进阶”方向&#xff09; Datawhale官方的task1链接&#xff1a;深度学习进阶-Task1 《深度学习详解》主要内容源于《机器学…

重邮计算机网络803-(3)数据链路层

目录 一.数据链路两种类型 二.使用点对点信道的数据链路层 1. 数据链路和帧 2.数据链路层传送的是帧 三.三个基本问题 1.封装成帧 2.透明传输 ①字节填充法 ②其他方法&#xff1a;字符计数法&#xff0c;比特填充法&#xff0c;违规编码 3. 差错检测 &#xff08;1…

第136天:内网安全-横向移动资源约束委派

利用条件 首先是dc域控主机必须是win2012以上的主机 其次是域内有一个账户&#xff0c;可以同时登录两台主机 利用 jie 可以登录 win2008 也可以登录 win7 资源委派不需要设置委派&#xff0c;默认即可 实验复现 复现环境 通过网盘分享的文件&#xff1a;136-xiaodi.local…

XSKY 亮相中国移动智算存储论坛,共话 AI 存储创新之路

8 月 15 日&#xff0c;由中国移动云能力中心主办的“智算存储论坛”在南京大学顺利举办&#xff0c;本期技术论坛的主题是《智存未来-构建 AI 时代新型存储基础设施》。作为中国移动云能力中心的合作伙伴&#xff0c;XSKY星辰天合受邀参加了此次技术大会。 XSKY 产品总监朱荣…

产品经理如何提升系统思考能力

很多工作年限比较短的产品经理&#xff0c;分析问题的时候最初看到的都是单点&#xff0c;只有积累了足够的经验和阅历后&#xff0c;才能看到单点之外的“全局”&#xff0c;才会慢慢形成自己的系统思考能力&#xff0c;才会提高自己的认知能力。 产品经理如果想往更高层面发…

解决添加MPJ插件启动报错

在项目中需要用到多数据源的级联查询&#xff0c;所以引入了MPJ插件&#xff0c;MPJ的版本是1.2.4&#xff0c;MP的版本是3.5.3&#xff0c;但却在启动的时候报错&#xff0c;报错如下&#xff1a; 解决办法&#xff1a; 将MP的版本降到3.5.1

重磅!尤文图斯携手Fortinet打造足球界的网络安全堡垒

近日&#xff0c;尤文图斯足球俱乐部与推动网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;正式宣布建立合作伙伴关系&#xff0c;并签署了一项为期至2026年的赞助协议。在此框架下&#xff0c;Fortinet荣膺尤文图斯未来两个赛季的…

Prompt-to-prompt image editing with cross attention control

Prompt-to-Prompt:基于 cross-attention 控制的图像编辑技术_prompt-to-prompt image editing with cross-attentio-CSDN博客文章浏览阅读2.7k次,点赞18次,收藏29次。Prompt-to-Prompt:基于 cross-attention 控制的图像编辑技术Prompt-to-prompt image editing with cross …

大白话讲微服务的灾难性雪崩效应

讲在前面&#xff0c;为什么微服务需要有熔断等策略呢&#xff1f;今天我们用大白话来讲讲微服务的灾难性雪崩效应&#xff0c;熔断策略就是解决雪崩效应的有效解决方案。 什么是灾难性雪崩效应&#xff1f; 假设我们有两个访问量比较大的服务A和B&#xff0c;这两个服务分别依…

19032 树上上升序列

### 思路 1. **输入处理**&#xff1a;读取节点个数、点权和边。 2. **构建图**&#xff1a;将树转换为有向无环图&#xff08;DAG&#xff09;&#xff0c;边的方向从点权小的指向点权大的。 3. **拓扑排序**&#xff1a;对DAG进行拓扑排序。 4. **动态规划**&#xff1a;使用…

创建一个Vue2项目

我们都知道&#xff0c;可以使用 pnpm create vuelatest 来创建一个最新版本的vue项目,该版本为Vue3,但是这个过程没有给我们选择创建的vue版本 经典创建Vue2项目流程 1.下载Vue脚手架 pnpm i vue/cli 2.执行vue指令创建Vue项目 这里因为我们不想选择全局位置安装全局依赖&…

小程序打开空白的问题处理

小程序打开是空白的&#xff0c;如下&#xff1a; 这个问题都是请求域名的问题&#xff1a; 一、检查服务器域名配置了 https没有&#xff0c;如果没有&#xff0c;解决办法是申请个ssl证书&#xff0c; 具体看这里 https://doc.crmeb.com/mer/mer2/4257 二、完成第一步后&a…

R 2火灾温度预测

火灾温度预测 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 使用LSTM进行时间序列预测 这周学习如何使用长短期记忆网络&#xff08;LSTM&#xff09;进行时间序列预测。使用PyTorch框架来构建和训练模型&…

捷途山海T2:混动技术,省钱驾驶新体验

在今日的汽车市场中&#xff0c;消费者的选择已经远远超出了传统的燃油车的范畴。随着节能、环保及用车成本等问题的逐渐凸显&#xff0c;人们开始寻找更加高效且环保的出行方式。在这一背景下&#xff0c;捷途山海T2作为一款搭载了高效混动系统的汽车&#xff0c;以其出色的节…

《机器学习》 贝叶斯分类器 原理、参数讲解及代码演示

目录 一、贝叶斯算法 1、简介 2、贝叶斯算法具有以下特点&#xff1a; 二、贝叶斯原理 1、正向概率&#xff08;先验概率&#xff09; 例如&#xff1a; 2、逆向概率&#xff08;后验概率&#xff09; 3、公式 1&#xff09;实例1 2&#xff09;实例2 • 目标&#x…

轻松获得ADSL代理服务

ADSL 代理服务接入常见问答 在当今激烈的网络爬虫与反爬虫斗争中&#xff0c;各大网站和应用程序采取的风险管理手段愈加严格&#xff0c;其中最常见的一种措施是 IP 封禁。 为了有效应对 IP 封禁带来的挑战&#xff0c;设置代理服务成为一种非常有效的解决方案。配置完代理后…

【计算机网络】电路交换、报文交换、分组交换

电路交换&#xff08;Circuit Switching&#xff09;&#xff1a;通过物理线路的连接&#xff0c;动态地分配传输线路资源 ​​​​

【2024】10个好用的AI搜索引擎大盘点

在2024年&#xff0c;随着人工智能技术的飞速发展&#xff0c;AI搜索引擎已经成为我们日常生活中不可或缺的一部分。这些基于人工智能技术的搜索引擎不仅提供了更快速、更准确的搜索体验&#xff0c;还通过自然语言处理&#xff08;NLP&#xff09;和机器学习&#xff08;ML&am…

快速学习“堆“排序(C语言数据结构)

前言&#xff1a; 堆的实现其实并不难&#xff0c;难的是要用堆实现排序&#xff0c;也就是堆的运用。 下面需要探究一下堆的排序是怎样的。 如何利用堆进行升序或者降序的排序。 "堆排序"&#xff1a; 原理&#xff1a; 例如&#xff1a;此时要将数组里的数组int a…

Leetcode面试经典150题-5.最长回文子串

解法都在代码里&#xff0c;不懂就留言或者私信 class Solution {public static String longestPalindrome(String s) {if(s null || s.length() 0) {return null;}//加工字符串&#xff0c;例如abcdcba加工成#a#b#c#d#a#b#c#d#String str getManacherString(s);char[] str…