海康摄像头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/浏览器会显示证书警告点击高级 → 继续访问然后再刷新你的播放页面。

相关新闻

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

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

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

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

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

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

2026/7/23 22:38:27 阅读更多 →
Autorize:越权检测插件性能优化

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

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

2026/7/23 22:38:27 阅读更多 →

最新新闻

HarmonyOS7 状态管理全家桶:@State、@Prop、@Link 到底怎么选?

HarmonyOS7 状态管理全家桶:@State、@Prop、@Link 到底怎么选?

文章目录前言为什么状态管理这么头疼三种装饰器对比场景一:父子单向传递(Prop)场景二:父子双向同步(Link)场景三:跨层级传递(Provide Consume)场景四:列表中…

2026/7/23 22:46:33 阅读更多 →
从零设计一套可复用的 Unity 手游框架:CGHGameFramework 架构实践

从零设计一套可复用的 Unity 手游框架:CGHGameFramework 架构实践

从零设计一套可复用的 Unity 手游框架:CGHGameFramework 架构实践标签: Unity 游戏框架 热更新 MMORPG 客户端架构 适合读者: Unity 中高级客户端、主程/技术负责人、准备搭自研框架的同学 说明: 本文基于本人主导落地的 CGHG…

2026/7/23 22:46:33 阅读更多 →
Redis优化

Redis优化

Redis优化Redis 键与值优化KeyKey命名规范为什么不要使用超长KeyValue(值)底层编码BigKey 优化官方定义BigKey核心危害BigKey解决方案热点Key优化批处理优化MsetPipeline集群下的批处理服务端优化持久化配置慢查询命令及安全配置内存配置内存缓冲区集群最…

2026/7/23 22:46:33 阅读更多 →
D2D商业化初期的博弈:成本、价格与增长的“三重奏”

D2D商业化初期的博弈:成本、价格与增长的“三重奏”

任何一项颠覆性技术在走向大众市场的过程中,都不可避免地要经历商业化的阵痛期。手机直连卫星(D2D)也不例外。尽管前景广阔,但当前的D2D市场仍处于“高烧的预产期”,面临着成本偏高、用户价格敏感与增长预期之间的激烈…

2026/7/23 22:46:33 阅读更多 →
HarmonyOS7 传感器开发:加速度计做个摇一摇,原来这么简单

HarmonyOS7 传感器开发:加速度计做个摇一摇,原来这么简单

文章目录前言传感器能做什么权限声明加速度计接入摇一摇实现完整代码算法讲解采样率与功耗其他传感器速览写在最后前言 摇一摇,这个功能最早是微信搞出来的,结果成了移动端的经典交互。在 HarmonyOS7 上实现摇一摇,比我想象的简单多了——加…

2026/7/23 22:45:32 阅读更多 →
每天60秒读懂世界|2026年7月23日:50℃极端高温、引力一号一箭9星与全球经贸新变化

每天60秒读懂世界|2026年7月23日:50℃极端高温、引力一号一箭9星与全球经贸新变化

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/7/23 22:45:32 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻