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

相关新闻

OpenHarmony 小鸿 AI 开发实战 02:从板级源码读懂 WS63、CI1302、ST7789 与外部 Flash

OpenHarmony 小鸿 AI 开发实战 02:从板级源码读懂 WS63、CI1302、ST7789 与外部 Flash

第 01 篇已经确认当前小鸿本体走的是 xiaohong 这条 WS63/OpenHarmony 主线。继续开发之前,还要把板级源码中的引脚、总线和器件职责理清,否则很容易把一个 GPIO 当成普通按键、把两类 Flash 混成同一存储空间,或者在 LCD 与外部 Flash 共享 …

2026/7/23 22:35:41阅读更多 →
企业级NAS建设方案

企业级NAS建设方案

一、项目概况 1、 背景与建设初衷 我司目前员工规模在 100 人以内。随着公司业务的快速发展,技术研发、产品运营及日常管理中所产生的内部资产资料急剧增加,企业内部资料的集中管理、权限划分与高效流转需求日益凸显。 为了打破数据孤岛,提升…

2026/7/23 22:35:41阅读更多 →
老板必看!AI落地就做这两件事,ROI瞬间翻倍!

老板必看!AI落地就做这两件事,ROI瞬间翻倍!

老板看AI,最关心的应该就是能不能帮我提升效率和降低成本,而不是你做了多少个AI对话,或者弄了多少个skill。 所以营销 Agent 和行政 Agent 的落地,不能从“我们要做一个智能体”开始,而要从一张账单开始:这…

2026/7/23 22:35:41阅读更多 →
端粒延长29%?从“以色列35人”到“中国136人”:高压氧抗衰大样本临床研究的数据解读

端粒延长29%?从“以色列35人”到“中国136人”:高压氧抗衰大样本临床研究的数据解读

当“祖传文献”迎来中国验证2020年,以色列特拉维夫大学Shai Efrati团队在《Aging》发表研究:35名64岁以上老人经60次高压氧治疗,部分免疫细胞端粒长度增加超20%,衰老T细胞减少近37%。这项研究从此成为高压氧抗衰领域的“祖传文献”…

2026/7/23 23:58:06阅读更多 →
流程引擎BPM设计之:流程二开的三种模式

流程引擎BPM设计之:流程二开的三种模式

.流程引擎BPM设计之:流程二开的三种模式 摘要 驰骋 BPM 主张:流程可以设计出来,业务却不能写进引擎内核。 流程设计完成后,要用脚本与流程引擎交互,在发送成功、发送前、退回、结束等生命周期点嵌入业务逻辑——这一能…

2026/7/23 23:58:06阅读更多 →
第一阶段-第8天-NumPy入门

第一阶段-第8天-NumPy入门

今日目标 安装并熟悉NumPy理解数组与列表的区别掌握基本的NumPy运算理解向量化的好处 学习内容 1. 安装NumPy pip3 install numpy验证安装: import numpy as np print(np.__version__)2. 创建数组 import numpy as np# 从列表创建 a np.array([1, 2, 3, 4, 5]) pri…

2026/7/23 23:58:06阅读更多 →
二维码库:二维码生成与扫描识别库(241)

二维码库:二维码生成与扫描识别库(241)

在鸿蒙(HarmonyOS)原生应用开发中,二维码与条形码的生成、扫描及识别是高频核心场景。鸿蒙生态提供了从系统级服务到跨平台库的丰富方案,帮助开发者快速构建精准的扫码体验。一、 官方核心方案:Scan Kit(统…

2026/7/23 23:58:06阅读更多 →
低价订阅plus

低价订阅plus

🚀 学习工作效率不够?让 AI 成为你的智能助手!无论你是正在赶课设、查资料、改论文、调代码的学生,还是需要写方案、做PPT、整理表格、优化文案的上班族,这里都能找到适合你的 GPT 等热门 AI 产品会员。✅ 梳理课设思路…

2026/7/23 23:58:06阅读更多 →
三维空间识别技术在危化品库区安全管理中的应用

三维空间识别技术在危化品库区安全管理中的应用

1. 项目背景与核心需求在化工园区、石油炼化等涉及危险化学品存储的场所,库区安全管理一直是重中之重。传统监控手段主要依赖二维平面摄像头和人工巡检,存在监控死角多、报警误报率高、响应滞后等问题。特别是在人员异常停留、未授权进入等场景下&#x…

2026/7/23 23:56:05阅读更多 →
Go语言静态资源打包方案对比与实践指南

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

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

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

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

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

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

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

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

2026/7/23 0:56:31阅读更多 →
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:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

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

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

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →