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

news/2024/9/17 21:25:33/ 标签: 前端, react.js, 前端框架, node.js

首先,我们需要拿到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.ppmy.cn/news/1517000.html

相关文章

五、Centos7-安装Jenkins

目录 一、基础环境准备 1.安装JDK 2.安装Tomcat 二、安装Jenkins 1.配置Jenkins插件镜像源 2.问题&#xff1a;进入manager jenkins页面报错 3.配置Git 4.配置jdk 三、重新安装Jenkins 四、另一种Centos安装jenkins的方式--最终可用版 克隆了一个base的虚拟机&#x…

UnrealEngine学习(01):安装虚幻引擎

1. 下载安装 Epic Games 目前下载UE引擎需要先下载Epic Games&#xff0c;官网为我们提供了下载路径&#xff1a; https://www.unrealengine.com/zh-CN/downloadhttps://www.unrealengine.com/zh-CN/download 我们点击图中步骤一即可进行下载。 注释&#xff1a;Unreal Engi…

未初始化的变量

学习C语言局部变量&#xff0c;经常听到这个说法。为什么局部变量默认是未初始化的&#xff1f;解释它需要理解程序结构和栈操作。 栈内存 C/C函数的局部变量保存在栈&#xff0c;栈可以认为是操作系统为了“加速”程序运行给线程配置了一块临时使用的内存区域&#xff0c;如果…

Spring Boot 框架中配置文件 application.properties 当中的所有配置大全

Spring Boot 框架中配置文件 application.properties 当中的所有配置大全 &#xff03;SPRING CONFIG&#xff08;ConfigFileApplicationListener&#xff09; spring.config.name &#xff03;配置文件名&#xff08;默认 为 application &#xff09; spring.config.lo…

一个干净的python项目(没连数据库啥的)

希望你们写代码有用&#xff08;直接可以拿来用&#xff0c;我只要您的一个关注和赞赞&#xff09; #用户数据 user1{"用户名":"aaa","密码":"123","姓名":"热孜娅","类型":"客户"} user2{&q…

Python 爬虫框架

Python 中有许多强大且主流的爬虫框架&#xff0c;这些框架提供了更高级的功能&#xff0c;使得开发和维护爬虫变得更加容易。以下是一些常用的爬虫框架&#xff1a; 1. Scrapy - 简介: Scrapy 是 Python 最流行的爬虫框架之一&#xff0c;设计用于快速、高效地从网站中提取…

【Rust光年纪】文本分析利器:探索Rust语言的多功能文本处理库

从情感分析到关键词提取&#xff1a;Rust语言文本分析库详解 前言 随着自然语言处理技术的不断发展&#xff0c;对各种文本数据进行分析和处理的需求也在不断增加。本文将介绍一些用于Rust语言的文本分析和处理库&#xff0c;包括情感分析、自然语言处理、中文转换、语言检查…

SQL,给连续的行加上标识序号

postgresql 数据库的表 tmp 有 2 个分组字段&#xff0c;source_id 和 event_user&#xff0c;将该表按 source_id 分组&#xff0c;组内按 event_date 排序后&#xff0c;event_user 相同的值会形成有序的小组&#xff1a; idsource_idevent_userevent_date11A05-03-201421A0…

DSB调制与解调仿真实验

一、实验目的&#xff1a; 熟悉使用SystemView软件&#xff0c;了解各部分功能模块的操作和使用方法。 通过实验进一步观察、了解模拟信号DSB调制、解调原理。 掌握DSB调制信号的主要性能指标。 比较、理解DSB调制的相干解调原理。 二、实验器材&#xff1a; 装有SystemV…

spring security怎么生成JWT返回前端,以及怎么自定义JWT认证过滤器

怎么生成JWT返回前端 1.先写一个类,里面含有jwt的生成解析验证过期时间的方法 package com.lzy.util;import io.jsonwebtoken.*; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.…

黑神话悟空用什么编程语言

《黑神话&#xff1a;悟空》作为一款备受瞩目的国产单机动作游戏&#xff0c;其背后的开发涉及了多种编程语言和技术。根据公开信息和游戏开发行业的普遍做法&#xff0c;可以推测该游戏主要使用了以下几种编程语言&#xff1a; C&#xff1a; 核心编程语言&#xff1a;作为《黑…

从行为面试问题(behavioral questions)看中美程序员差异。

中美程序员在职场中的工作状态和职能、福利等有很大区别&#xff0c;从面试中的BQ轮就可见一斑。 中美程序员的面试轮差异&#xff1f; 国内的面试轮在不同公司间差异很大&#xff0c;但总体的问题类型包含笔试面试&#xff08;算法题、概念题、项目深挖、职业目标、职场文化…

【刷题笔记】leetCode448找到缺失的数

常规解法 public List<Integer> findDisappearedNumbers(int[] nums) {HashMap<Integer,Integer> numMap new HashMap<>();for (int i 0;i<nums.length;i){if (numMap.get(nums[i]) null){numMap.put(nums[i],i);}}List<Integer> result new A…

物联网关创业之路:从梦想到现实

在物联网大潮涌动的时代&#xff0c;李明看到了无限的机遇。他一直对科技充满热情&#xff0c;坚信物联网将改变人们的生活和工作方式。各类设备 IoT 的兴起&#xff0c;让他意识到一个强大的物联网关对于实现设备互联和数据传输的重要性。 李明决定投身于物联网关的设计开发创…

Apache Druid日志实时分析

业务分析 ​ 秒杀业务中&#xff0c;通常会有很多用户同时蜂拥而上去抢购热卖商品&#xff0c;经常会出现抢购人数远大于商品库存。其实在秒杀过程中&#xff0c;热卖商品并不多&#xff0c;几乎只占1%&#xff0c;而99%的流量都源自热卖商品&#xff0c;很有可能因为这1%的热…

Stream DATA From openai GPT-3 API using php

题意&#xff1a;“使用 PHP 从 OpenAI GPT-3 API 流式传输数据” 问题背景&#xff1a; Im having trouble with the OpenAI API, Basically what Im trying to do is stream each data node that is streamed back from the openai API response and output each data node …

综合评价 | 基于层次-熵权-变异系数-正态云组合法的综合评价模型(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 综合评价 | 基于层次-熵权-变异系数-正态云组合法的综合评价模型&#xff08;Matlab&#xff09; AHP层次分析法是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析…

Qt:玩转QPainter序列一

前言 最近想潜心研究一下QPainter这个类&#xff0c;最好把QPainter所有的函数都敲一遍&#xff0c;特地记录一下。 在说QPainter之前我们需要了解两个非常重要的东西 第一个坐标系 我用两张图来表示 代码实操的结果 更加详细的坐标系内容请看我的另一篇博客 第二个是有…

VCTP(Visual Chain-of-Thought Prompting for Knowledge-Based Visual Reasoning)论文

目录 摘要介绍相关工作方法总体模型细节 实验 摘要 知识型视觉推理仍然是一个艰巨的任务&#xff0c;因为它不仅要求机器从视觉场景中解释概念和关系&#xff0c;而且还需要将它们与外部世界知识联系起来&#xff0c;对开放世界问题进行推理链。然而&#xff0c;以前的工作将视…

【区块链 + 智慧文旅】鲜檬内容生态平台 | FISCO BCOS应用案例

基于鲜檬&#xff08;虎彩集团旗下的“鲜檬摄影有限公司”&#xff0c;简称鲜檬&#xff09;的业务规划&#xff0c;除了婚拍摄影外&#xff0c;以定制化家纺、 餐具、陶瓷品为主的产品诉求也日渐增加。为了支撑庞大的业务体量&#xff0c;设计能力的连接和整合迫在眉睫。同时&…