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

news2024/11/13 23:00:46

首先,我们需要拿到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.coloradmin.cn/o/2081792.html

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

相关文章

【区块链 + 司法存证】印记区块链电子印章 | FISCO BCOS应用案例

电子印章作为传统物理印章的数字化锚定&#xff0c;除了拥有和物理印章一样的法律效力外&#xff0c;还能够有效地为企业增效降 本提质。近年来&#xff0c;随着国家双碳目标的提出以及全球新冠疫情&#xff0c;进一步加速了企业数字化转型的步伐&#xff0c;电子印章 的价值也…

day12JS-Event事件

1. 事件的分类 事件类型包括有系统事件和自定义事件。 2. 初始化事件 1. 创建事件对象&#xff0c;Event是事件对象。 bubbles:true 表示支持冒泡。 var/let 变量名 new Event(事件类型&#xff0c;事件选项是否支持冒泡(可省略)); 2. 创建一个事件目标对象的实例化对象 。…

JetBrains`s IntelliJ IDEA springboot项目 gradle-bin安装 国内加速

gradle wapper加速 可以看到&#xff0c;一般我们直接init的springboot项目会默认使用wapper来安装不同版本的gradle&#xff0c;但services.gradle.org网速过慢&#xff0c;我们选择切换为国内源 发现一篇同样的文档,并在此补充多个源 源名urlgradle(原本)https\://service…

宠物空气净化器哪款更值得推荐?希喂和352哪款更好?

自从几年前我养了一只毛茸茸、眼神灵动的小猫咪&#xff0c;成为了我们家庭的一员后&#xff0c;家里的生活便发生了翻天覆地的变化。每天上班下班前都要安抚它们&#xff0c;避免出现分离焦虑&#xff0c;就算它们没有这个症状&#xff0c;我都害怕它们会出现在这个症状&#…

什么是 AWS CloudWatch?

AWS CloudWatch 是 AWS 提供的一项全面的监控和可观测性服务&#xff0c;使用户能够收集和可视化指标、日志和事件&#xff1b;设置警报&#xff1b;并根据预定义的条件自动执行操作。CloudWatch 提供对 AWS 资源和应用程序的运行状况、性能和运行状态的深入了解&#xff0c;使…

【openpyxl-驯化】一文搞懂python是如何将文本、图片写入到execl中的技巧

【openpyxl-驯化】一文搞懂python是如何将文本、图片写入到execl中的技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 相关内容文档获…

TikTok/Shopee本土多站点涨佣金,卖家如何应对?EasyBoss ERP总结了5大应对策

近日消息&#xff0c;TikTok Shop马来西亚本土店将调整其市场佣金费用与交易费用&#xff0c;并为参与Mall计划的卖家引入Mall佣金费用&#xff0c;新的费率将从2024年9月5日生效。 TikTok Shop马来站佣金费率调整规则 图源&#xff1a;TikTok Shop 注&#xff1a;上述佣金率仅…

Linux中的常见命令——时间日期类命令

1、date显示当前时间 基本语法 写法功能描述date显示当前时间date %Y显示当前年份【四位数】date %m显示当前月份date %d显示当前是哪一天date "%Y-%m-%d %H:%M:%S" 显示年月日时分秒 【由于年月日和时分秒中间有空格所以需要用引号引起来】 实操案例 1、显示当…

Salesforce篇——如何在lightning页面添加ListviewButton使用lwc组件

1.创建lwc组件&#xff0c;用于展示listview已选数据&#xff1a; html&#xff1a; <template><lightning-card title"Selected Records"><p>Selected Record IDs: {selectedIds}</p><lightning-button label"返回" onclick…

想避免踩雷选到好用的骨传导耳机?精选热门五款分享

目前在市面当中&#xff0c;骨传导耳机被称之为是黑科技耳机&#xff0c;骨传导耳机拥有很多优势&#xff0c;在听歌时不需要入耳&#xff0c;不会伤耳朵。随着骨传导耳机品牌的不断发展&#xff0c;人们在选购骨传导耳机时&#xff0c;也会觉得非常困难&#xff0c;可能一不小…

Selenium的四种部署方式详解

关于selenium 的部署&#xff0c;我在网上找了很多&#xff0c;基本上都没有提到或是说的比较清晰的。当时我一直有个困惑&#xff1a;测试的脚本代码&#xff0c;是放在跟浏览器同一台机器上呢&#xff0c;还是放在Application Server上&#xff1f; 在官方开发文档中&#x…

人工智能项目管理︱大模型在项目管理中的应用

全国项目经理专业人士年度盛会 河钢数字技术股份有限公司绿色低碳事业部研发交付中心部门经理江鑫先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“大模型在项目管理中的应用”。大会将于10月26-27日在北京…

使用终端工具Tabby(跳板机)连接ssh

目录 1.tabby下载2.下载安装3.安装成功3.1在应用中配置语言为中文3.2外观可以更改字体大小颜色等3.3配色方案改变外观颜色3.4快捷键&#xff0c;可以根据自己的习惯自定义修改3.5配置和连接&#xff08;最重要的&#xff0c;安装完成要连接ssh可以直接到这一步&#xff09; 1.t…

【运维心得】获取程控交换机的IP的笨办法

本文主要解决了当你忘记某个程控交换机设备的IP地址的时候&#xff0c;如何通过技术手段进行获取。 背景 智能手机的普及&#xff0c;让固定电话已经逐渐从寻常百姓家里消失了。但仍然是单位客户的必要选择&#xff0c;例如400或者800电话&#xff0c;当然&#xff0c;也有公…

共轴麦轮直立、运动、位置串级PID

角度PID 微分项Angle_Pram[KD] * gyroy&#xff1a;根据角速度的变化率来调整电机PWM&#xff0c;角速度变化越快&#xff0c;调整的幅度也越大。 速度PID Encoder_Least (Encoder1 Encoder2 Encoder3 Encoder4) - Trg_Speed;&#xff1a;计算速度偏差&#xff0c;即四个编…

大批量影像瓦片优化

背景 在很多场景中&#xff0c;需要用的影像瓦片&#xff0c;常规的思路是将tif进行切图&#xff0c;做成分层的瓦片&#xff1a; 但是&#xff0c;如果层级太高&#xff0c;产生的文件将十分庞大&#xff0c;据测试&#xff0c;某地级市18层级切片&#xff0c;内存占用高达2…

【Windows】bat批处理获取文件路径,并写入注册表

echo off setlocal:: 获取当前绝对路径 for %%I in ("%~dp0") do set "CURRENT_DIR%%~fI":: 拼接文件名 set "FILE_NAMEtest.exe" set "FULL_PATH%CURRENT_DIR%%FILE_NAME%"::创建注册表项并写入数据 ::/v 具体的注册表项值的查…

图片拼图怎么操作?教你5个快速拼图的方法

我的元气假期已经到尾声了&#xff0c;在此期间的照片也积累了很多&#xff0c;要怎么把它们全部分享出来呢&#xff1f; 当然&#xff0c;最直接的方式就是把它们做成一张张精美的图片拼图啦&#xff01;这样不仅能节省空间&#xff0c;还能让朋友们一眼就看到你的精彩假期生…

一篇文章带你入门Golang

Go语言的特点和优势 1&#xff0e;简单易学 Go语言语法简单&#xff0c;包含了类似C语言的语法。如果读者已经掌握了两到三门编程语言&#xff0c;那么学习Go语言只需要几天的熟悉过程。即使一名刚入门的开发者&#xff0c;花几个星期也能写出来性能较高的程序。 2&#xff…

GlobalUsing、JSON Schema、NuGet使用方法

一、速通一图流 二、GlobalUsing 使用 1. 关于 GlobalUsing 在 .NET 6/C# 10 之后&#xff0c;微软引入了 GlobalUsings 机制。这个机制允许你在项目根目录下创建一个 GlobalUsings.cs 文件&#xff0c;并在其中定义全局的 using 指令。这样一来&#xff0c;项目中的其他 .cs…