海康摄像头RTSP转换前端浏览器实时播放

发布时间:2026/9/11 21:57:04

海康摄像头RTSP转换前端浏览器实时播放 背景公司运维平台需求把机房监控接入可在运维平台web实时查看。解决方案前端无法播放RTSP数据问了deepseek和查看别人的建议最后决定采用以下方案基于 ffmpeg 的 Node 后端推流方案 基于 jspmeg 的前端视频展示。RTSP 流 - Web 能接收的流Websocket - Web Video核心思路是借助后端服务做一次中转。我们用 Node.js 搭建一个转码服务把浏览器无法识别的 RTSP 流转成它能播放的格式。后端部分基于 ffmpeg 的 node 推流方案准备node环境 16本人环境CentOS 7 node: v22.22.3第一步安装 FFmpeg:sudo yum install ffmpeg如果提示找不到包可能需要先启用 EPEL 仓库CentOS 7 默认仓库不包含 ffmpeg需要添加第三方仓库# 1. 安装 EPEL 仓库 sudo yum install -y epel-release # 2. 安装 RPMfusion 仓库提供 ffmpeg sudo yum install -y https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm sudo yum install -y https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm # 3. 安装 ffmpeg sudo yum install -y ffmpeg安装完成后验证是否安装成功ffmpeg -version第二步搭建后端转码服务创建项目并安装新建一个文件夹例如rtsp-server注意文件夹名称不要叫rtsp2web。在命令行中进入该文件夹然后执行npm init -y npm i rtsp2web注安装卡住可能需要配置镜像源。编写启动代码在项目根目录下创建一个main.js文件输入以下代码。这是启动转码服务的核心。// main.js const RTSP2web require(rtsp2web) // 服务端口可以自定义默认是 9999 const port 9999 new RTSP2web({ port, host: 0.0.0.0, transportType: tcp, // ⭐ 关键配置禁用文本水印 drawText: false })启动服务在命令行中运行node main.js。如果看到类似“服务已启动”的日志就说明后端服务跑起来了第三步创建前端播放页面在同一个文件夹或任何静态服务器中创建一个index.html文件这是播放视频的网页。!DOCTYPE html html head meta charsetUTF-8 titleRTSP 播放/title script srchttps://jsmpeg.com/jsmpeg.min.js/script style body { background: #1a1a1a; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; } canvas { width: 800px; height: 600px; background: #000; border-radius: 8px; } /style /head body canvas idvideo-canvas/canvas script // ⭐ 原始 RTSP 地址不要做任何编码 // 海康web页面的用户名、密码 及 ip地址端口默认554后面的1301代表通道13的数据如果是通道1则为101其他通道类似102, 103 ....。 var rawUrl rtsp://username:passwordxx.xx.xx.xxx:554/Streaming/Channels/1301; // ⭐ 只做 Base64 编码 var encodedUrl btoa(rawUrl); var serverIP xxx.xx.xx.x; # 上一步搭建的转换服务器的ip var wsUrl ws:// serverIP :9999/rtsp?url encodedUrl; console.log(连接地址:, wsUrl); window.onload function() { new JSMpeg.Player(wsUrl, { canvas: document.getElementById(video-canvas), autoplay: true }); }; /script /body /html第四步开始播放保持后端服务运行确保第一步的命令行窗口没有关闭node main.js一直在运行。打开前端页面在浏览器中打开你刚创建的index.html文件。在刚才的服务器上用 VS Code 的 Live Server 插件或者用 Python 快速启动一个静态服务# 在 index.html 所在目录执行python3 -m http.server 8080然后通过http://xxx.xxx.xx.xx:8080访问页面查看效果稍等片刻转码需要一点时间你应该就能在页面上看到 RTSP 视频流了。最后通过以上demo确认了方案是可行的再按照上面的方法把接入到你的web上就可以在自己的网站前端查看实时监控了。视频上有一个clear with qq的水印问下ai看看如何消除楼主当前还没解决视频其他设置例如清晰度什么的有需要的也可以问问ai都是能设置的。楼主本人之前无任何经验都是询问DeepSeek和百度实现的后续也是成功在运维平台的网站上接入实时监控。最后如果还是不行看看这个配置是否是这样的或检查下其他配置。------------------------------------------------------消除水印更新------------------------------------------------------在node.js 中增加配置 wm1: false// main.js const RTSP2web require(rtsp2web) new RTSP2web({ port: 9999, host: 0.0.0.0, transportType: tcp, wm1: false, // ⭐ 关键禁用水印 // 其他参数... })------------------------------------------------------https更新------------------------------------------------------考虑到网站可能是httpsws会升级为wss那么后端转码服务rtsp-server必须也要支持wss只需要在配置中加入wss配置项再生成自签名证书即可。项目目录下创建certs 证书文件夹并创建自签名证书# 在项目目录下执行 mkdir -p certs cd certs # 生成私钥 openssl genrsa -out key.pem 2048 # 生成证书有效期365天末尾为rtspserver的ip或域名 openssl req -new -x509 -key key.pem -out cert.pem -days 365 -subj /CN192.168.xx.xx后端加上wss启动配置// main.js const RTSP2web require(rtsp2web) const path require(path) // 服务端口可以自定义默认是 9999 const port 9999 new RTSP2web({ port, host: 0.0.0.0, transportType: tcp, // ⭐ 关键配置禁用文本水印 drawText: false, // ⭐ 关键移除水印 wm1: false, //q: 23, // 视频质量数值越小越清晰 audio: false, // 禁用音频减少带宽 freeTime: 5, // 空闲5秒后自动关闭通道 // wss配置 wss: { cert: path.join(__dirname, certs/cert.pem), key: path.join(__dirname, certs/key.pem) } })前端升级wss# 前端index.html改为wss var wsUrl wss:// serverIP :9999/rtsp?url encodedUrl; # 安装 serve npm install -g serve # 用 serve 启动 HTTPS 服务--ssl 参数 serve -s /root/rtsp-server -l 8080 --ssl-cert /root/rtsp-server/certs/cert.pem --ssl-key /root/rtsp-server/certs/key.pem如果是自签名证书浏览器会阻止连接。解决方法在浏览器中先单独访问rtspserver服务https://192.168.xx.xx:9999/浏览器会显示证书警告点击高级 → 继续访问然后再刷新你的播放页面。
延伸阅读

更多相关文章

2026/8/31 14:31:35

面向欧洲GDPR合规的Node-RED边缘计算网关本地脱敏架构实战

摘要:在装备出海(如发往欧盟或欧洲经济区市场)项目中,实现底层PLC与海外物联网云平台的数据互通,不仅要解决复杂的电信与电磁兼容(CE RED指令)物理阻碍,更要在系统架构层面应对GDPR&…

2026/9/5 22:41:53

Django计算机毕设之基于 Django 的贵州山地特色产品产地直售商城系统设计与实现 轻量化贵州特色好物线上交易平台的设计与实现(完整前后端 代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/8 19:53:08

Autorize:越权检测插件性能优化

核心配置调整1、精准设置扫描范围在Target 标签 → Scope 子标签页中,仅添加需要测试的路径(如/admin/*、/api/user/*),避免全域名扫描。勾选Exclude static files,过滤CSS、JS、图片等静态资源,减少无效请…

2026/9/11 21:53:40

WPAN无线个人区域网核心特点:从蓝牙到ZigBee的技术解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/11 21:53:40

AI自动化生成架构图工具next-ai-draw-io技术解析

1. 项目概述:AI驱动的架构图自动化生成工具next-ai-draw-io是一个基于Next.js框架开发的创新工具,它通过集成AI能力实现了架构图的自动化生成。这个工具的核心价值在于将自然语言描述转化为专业的架构图,极大提升了技术文档和系统设计的效率。…

2026/9/11 21:53:40

2025-2026护眼台灯选购指南:硬指标详解、品牌横测与实测避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/11 21:53:40

C语言指针深度解析:从内存寻址到高级应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/11 21:53:40

CMSIS-FreeRTOS深度解析:ARM官方封装的工程逻辑与实战陷阱

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/11 21:48:40

2026年服装收银系统怎么选?5款主流软件实测对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码