web端播放rtsp视频流(摄像头监控视频)教程

文章目录

  • 前言
  • 一、ffmpeg是什么?
  • 二、ffmpeg安装
    • 1.下载
    • 2.安装
  • 三、node搭建websocket服务
  • 四、web客户端播放视频


前言

像海康大华一些摄像头或者直播源 为rtsp视频流,想在web上播放必须进行协议转换。已知一些方案例如rtsp转rtmp需要flash,现在浏览器基本不支持flash。还有转hls或者flv这些延迟都比较高。经过实践对比比较理想方案是 经转码后视频流通过websocket传送给客户端在将视频流解码成图片通过canvas渲染出来,延迟比较小基本在1s以内。所用工具(插件)为ffmpeg+node(node-rtsp-stream)+jsmpeg


一、ffmpeg是什么?

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案,简而言之就是一个可以转换各种视频流格式/协议的强大工具。

二、ffmpeg安装

1.下载

ffmpeg下载地址

在这里插入图片描述
进入官网选择window图标-点击windows builds form gyan.dev

在这里插入图片描述
进入内页下拉找ffmpeg-release-essentials.zip点击下载

下载完解压

在这里插入图片描述

在bin目录下有个ffmpeg.exe 程序运行入口
在这里插入图片描述

2.安装

  ffmpeg添加到全局环境变量

window+i 输入’环境变量’搜索打开系统属性窗口

在这里插入图片描述
点击环境变量,在系统变量中找到Path点击编辑

在这里插入图片描述
浏览-选择ffmpeg解压出来的bin目录

在这里插入图片描述
确定-确定-确定关闭窗口

添加成功后验证是否生效
任意地方打开Powershell窗口或cmd窗口
输入 ffmpeg 打印如下表示成功

在这里插入图片描述


三、node搭建websocket服务

此功能需要借助node-rtsp-stream插件,node-rtsp-stream是一个node环境下处理rtsp视频流插件,借助它能通过代码自动调用ffmpeg程序进行推流拉取转换并以websocket形式输出视频流。
由于在node下搭建服务,所以电脑要先安装node环境。怎么安装node环境自行查找其他教程。

新建一个app.js文件,同级目录下npm安装 node-rtsp-stream

npm install node-rtsp-stream -S

在这里插入图片描述
app.js写入:

const stream = require('node-rtsp-stream')new stream({name: 'video-stream',streamUrl: 'rtsp://xxxxx',//rtsp地址wsPort: 9999,//端口号ffmpegOptions: { '-stats': '', '-r': 30 ,//视频帧数'-s': '1920*1080' //视频分辨率}
})

运行

node app.js

在这里插入图片描述

出现上面打印一堆推流数据表示node服务启动成功,服务端工作就完成了

四、web客户端播放视频

web端用到jsmpeg插件播放视频,jsmpeg是个js插件能将视频流解码成图片并渲染出来。

jsmpeg.min.js下载地址:jsmpeg.min.js

新建index.html文件,jsmpeg.min.js放置同一个目录下,index.html写入

<!DOCTYPE >
<html><head><script src="./jsmpeg.min.js"></script><style>#video{width: 1000px;height: 600px;}</style></head><body><canvas id="video"></canvas><button onclick="onPlay()">播放</button><button onclick="onPause()">暂停</button><button onclick="onStop()">停止</button></body><script>var canvas = document.getElementById("video");var url = "ws://127.0.0.1:9999";var player = new JSMpeg.Player(url, { canvas });//开始播放function onPlay() {player.play();}//暂停播放function onPause() {player.pause();}//停止播放function onStop() {player.stop();}</script>
</html>

测试:打开运行index.html,成功播放

在这里插入图片描述

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

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

相关文章

1045 - Access denied for user ‘root @223.98.184.126‘ (using password: YES)

Mysql 1045错误 1 知识小课堂1.1 Mysql 1045错误1.2 mysql 常见的错误代码 2 问题呈现3 问题解决3.1 开始前的准备3.1.1 防火墙开端口3.1.2 宝塔管理控制 3.2 问题解决步骤 Navicat 连接数据库的时候报错&#xff0c;本文就是解决此问题。 1 知识小课堂 1.1 Mysql 1045错误 …

创建springBoot模块没有目录结构

我用2023版的idea创建模块的时候会出现一些奇奇怪怪的错误&#xff0c;有时候没有项目目录结构&#xff0c;有时候项目的的目录都是普通文件。接下来简单介绍下解决方案。 选择有问题的模块&#xff0c;点击&#x1f197;即可。

H2S硫化氢荧光探针之星戈瑞实验室单品

H2S硫化氢荧光探针&#xff08;近红外二区&#xff09;优势和应用 λe x 1064 nm &#xff0c;λem 1100 nm 近红外二区硫化氢荧光探针具有许多优势&#xff0c;使其在生物医学领域具有诸多应用。以下是其主要优势和应用方面&#xff1a; **优势&#xff1a; 1.深度穿透性&…

22款奔驰GLE53升级座椅通风 后排倾斜 增加出行舒适感

众所周知 广东的天气 一年四季都是可以穿短袖的&#xff0c;足以证明是有多热&#xff0c;所以这台奔驰GLE53过来升级一套原厂的座椅通风 增加舒适性的同时也不忘记后排&#xff0c;GLS和GLE的车主都知道第二排的座椅角度是非常直板的 所以也升级了一台 后排倾斜 提升后排的舒适…

【算法Hot100系列】最长有效括号

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

Jmeter 性能压测 —— 常遇问题与解决技巧!

问题1&#xff1a;如何在大并发测试下&#xff0c;让登录或者后续接口只执行一次&#xff1f; 分析&#xff1a; 这个问题网上的答案其实很多&#xff0c;但是大多不靠谱。 比如推荐使用仅一次控制器&#xff0c;但是仅一次控制器对线程组无效&#xff1b; 比如推荐跨线程组…

Java网络爬虫--概述与原理

目录标题 基本概念与原理爬虫与搜索系统的关系爬虫运行原理爬虫步骤DNS域名解析 爬虫开发本质网络爬虫的分类通用网络爬虫聚集网络爬虫增量式网络爬虫Deep Web爬虫 参考文献 基本概念与原理 爬虫又叫网络蜘蛛&#xff0c;一种运行在互联网上用来获取数据的自动程序。 互联网的…

【扩散模型】10、ControlNet | 用图像控制图像的生成(ICCV2023)

论文&#xff1a;Adding Conditional Control to Text-to-Image Diffusion Models 代码&#xff1a;https://github.com/lllyasviel/ControlNet 出处&#xff1a;ICCV2023 Best Paper | 斯坦福 时间&#xff1a;2023.02 一、背景 文本到图像的生成尽管已经有很好的效果&…

全面认识反向代理与负载均衡神器 —— Nginx

目录 一. 前言 二. Nginx 特点和作用 三. Nginx 安装 四. Nginx 常用命令 五. Nginx 核心配置 5.1. 配置文件结构 5.2. 配置文件 main 段核心参数 5.2.1. user 5.2.2. pid 5.2.3. worker_rlimit_nofile_number 5.2.4. worker_rlimit_core 5.2.5. worker_processes_…

C#VS2022 打包成安装包

步骤参考&#xff1a;VisualStudio&#xff08;2022&#xff09;- 打包项目文件为.exe安装包_vs2022打包exe-CSDNja 步骤参考上方链接&#xff0c;不过在Application Folder文件夹中加的是\项目名称\bin\Debug\下的全部文件&#xff0c;其他地方一样。 最终生成的安装包在Deb…

NVIDIA Container Toolkit(NVIDIA Docker)

引言 Nvidia Docker该项目已被NVIDIA Container Toolkit取代。此存储库提供的工具已被弃用&#xff0c;并且该存储库已存档。 nvidia-docker不再支持包装器&#xff0c;并且 NVIDIA Container Toolkit 已进行扩展&#xff0c;允许用户配置 Docker 以使用 NVIDIA Container Ru…

网络多线程开发小项目--QQ登陆聊天功能(用户登陆功能实现)

9.1.1用户登陆功能实现 1、需求分析 2、代码实现 2.1、Client和Server端共有类 1&#xff09;cn.com.agree.qqcommon.Message package cn.com.agree.qqcommon;import lombok.Data; import lombok.extern.slf4j.Slf4j;import java.io.Serializable; Slf4j Data public class M…