Skip to main content

使用 reCamera 实现 RTSP 到 WebRTC 的实时视频流

介绍

当你希望将 reCamera 的视频流集成到自己的 Web 应用中,或者通过浏览器以低延迟远程查看摄像头画面时,可以参考本示例。 本项目通过 RTSP 协议推送 reCamera 的视频流,通过 mqtt out 节点将推理结果传输到 PC 端,然后在 PC 端将 RTSP 视频流与推理结果进行融合并转换为 WebRTC 格式,使任意浏览器无需插件即可实时播放带推理结果的视频流。它提供了一种**“解放” reCamera 视频流**的方式——一旦视频流可以通过 RTSP 输出,你就可以轻松地:

  • 集成到自己的 Web 应用或管理平台中:将实时视频画面嵌入现有的看板、监控系统或物联网平台。

  • 多设备视频聚合:在同一网页上同时查看多路 reCamera 画面,搭建多通道视频监控墙。

  • 远程访问与跨网络穿透:借助 WebRTC 的 NAT 穿透能力,即使处于不同网络环境,也能以低延迟查看 reCamera 的实时画面。

  • 为 AI 推理结果可视化提供传输通道:reCamera 在边缘侧完成 AI 推理后,将推理结果随视频一同输出,PC 端可在浏览器中实时展示 AI 分析结果,适用于搭建远程巡检、智能安防等应用。

本示例展示了一种方法,可以将 reCamera 从一台独立的视觉设备转变为可被任意 Web 系统集成的视频源。我们希望这个项目能启发你,探索 reCamera 与 Web 技术结合的更多可能性。

系统架构

整个系统由两部分协同完成:reCamera 端PC 服务器端。架构如下:

阶段执行位置使用的技术/协议描述
视频采集与编码reCamera摄像头 + H.264 编码采集视频并进行编码
AI 推理reCameraYOLO11n 模型对视频帧执行 AI 目标检测推理
RTSP 推流reCameraRTSP 协议(端口 554)通过 RTSP 协议向网络推送视频流
MQTT 推理结果传输reCamera → PC 服务器MQTT 协议(端口 1883)通过 MQTT 将推理结果(框坐标、标签)传输到 PC
视频接收与解码PC 服务器OpenCV + FFmpeg接收 RTSP 流并解码为原始帧
推理结果与视频融合PC 服务器detection_store + OpenCV将 AI 检测框和标签叠加到视频帧上
WebRTC 编码与传输PC 服务器aiortc将融合后的视频帧编码为 WebRTC 格式并传输
实时播放PC 浏览器WebRTC在浏览器中以低延迟播放带推理结果的视频

硬件准备

要运行本示例,你需要以下硬件:

  • 一台 reCamera 设备(支持所有 reCamera 型号)
  • 一台 PC 电脑(用于运行 WebRTC 中转服务,需与 reCamera 处于同一局域网)

你可以根据部署需求选择任意版本的 reCamera

  • reCamera 2002 系列(Wi-Fi)
  • reCamera Gimbal
  • reCamera HQ PoE(以太网 + PoE)

注意: PoE 版本不支持 Wi-Fi,必须通过支持 PoE 的交换机接入同一局域网。

reCamera 2002 系列reCamera GimbalreCamera HQ PoE

示例环境搭建

步骤 1:配置 reCamera

首先,按照官方入门指南完成 reCamera 的基础配置:reCamera Getting Started

完成初始配置后,确保设备已上电并正确连接到网络。 然后,通过浏览器访问地址 192.168.42.1 登录 reCamera,进入 Node-RED 工作空间。

如果你能够成功访问如下图所示的 Node-RED 流程界面,则说明配置已完成。

步骤 2:配置 RTSP 推流

reCamera 内置 RTSP 推流功能,可以通过 Node-RED 流程轻松配置。你只需要在流程中部署两个节点即可。关于 SenseCraft AI 教程,请参考链接 Access SenseCraft AI reCamera Dashboard

2.1 导入并配置 Camera 节点

从左侧拖拽 Camera Node 到工作区,双击进入配置界面,可根据需要设置分辨率、帧率等参数。按照下图所示的流程导入并配置 Camera 节点。

Camera 参数配置

2.2 导入并配置 Stream 节点

从左侧拖拽 Stream Node 到工作区,选择 RTSP 协议并配置推流地址和端口。reCamera 默认的 RTSP 推流地址为:

rtsp://admin:[email protected]:554/live

RTSP 推流参数配置

2.3 导入 Model 节点

从左侧拖拽 Model Node 到工作区,点击 Device 并选择 YOLO11n Detection 模型。

2.4 导入 MQTT Out 节点

从左侧拖拽 MQTT Out Node 到工作区,并按照下图设置 MQTT Broker 地址以及与服务器通信的主题。

配置完成后,点击右上角的 Deploy 部署流程,reCamera 即会开始通过 RTSP 协议推流。

步骤 3:在 PC 上部署 WebRTC 转换服务

WebRTC 中转服务运行在 PC 上,负责接收 RTSP 流和 MQTT 消息,将推理结果与视频流进行融合,并转换为 WebRTC 格式供浏览器实时播放。

3.1 环境准备

请确保你的 PC 已安装以下环境:

  • Python 3.8+
  • pip 包管理器

注意: 在 Windows 上安装 aiortc 可能需要先安装 Microsoft C++ Build Tools。你可以从 Visual Studio Build Tools 下载并安装。

3.2 获取代码并安装依赖

仓库获取 RTSP 转 WebRTC 的 Python 项目代码。将项目代码下载到 PC 后,进入项目目录并安装 Python 依赖:

cd rtsp_to_webrtc
pip install -r requirements.txt

3.3 项目文件说明

项目包含以下核心文件:

文件说明
server.pyWebRTC 信令服务器,启动内嵌 MQTT Broker,处理浏览器连接请求并建立 WebRTC 会话
mqtt_broker.py内嵌 MQTT 3.1.1 Broker(纯 asyncio 实现)及订阅客户端,接收从 reCamera 的 Node-RED 推送的 YOLO 推理结果
detection_store.py推理结果存储模块,缓存最新的检测框和标签数据,用于视频帧叠加渲染
video_sources.py视频协议抽象层
index.html前端播放器页面,提供协议选择和 WebRTC 视频播放功能
requirements.txtPython 依赖列表

3.4 启动服务

使用默认配置启动服务:

python server.py

服务启动后,你将看到如下日志输出:

INFO:webrtc-server:Starting server on http://0.0.0.0:8080
INFO:webrtc-server:Default source: rtsp://admin:[email protected]:554/live
INFO:webrtc-server:Supported protocols: rtsp, onvif, gb28181, rtmp, hls
INFO:webrtc-server:MQTT Broker: 0.0.0.0:1883, topic: yolo11n_result
INFO:webrtc-server:Open http://localhost:8080 in your browser

你也可以通过命令行参数自定义配置:

# Specify the default video source address
python server.py --source rtsp://admin:[email protected]:554/live

# Specify the service port
python server.py --port 9090

# Specify both address and port
python server.py --source rtsp://admin:[email protected]:554/live --port 8080

命令行参数说明:

参数默认值说明
--host0.0.0.0服务器绑定地址
--port8080服务器监听端口
--sourcertsp://admin:[email protected]:554/live默认视频源地址

注意: 请确保 PC 的防火墙允许 8080 端口(或你指定的端口)的入站连接,并确保 PC 与 reCamera 处于同一局域网中。

步骤 4:运行 Demo

  1. 确保 reCamera 已配置为 RTSP 推流并已部署工作流
  2. 确保 PC 上的 server.py 已启动并在运行
  3. 在 PC 浏览器中访问 http://localhost:8080
  4. 在页面中选择协议(RTSP),并输入 reCamera 的 RTSP 流地址(默认已填入)
  5. 点击 "Start Playing" 按钮

在浏览器中实时播放 reCamera 视频

连接成功后,页面会显示以下信息:

  • 视频画面:实时显示 reCamera 的视频
  • 连接状态:页面左上角的绿色连接状态指示
  • 流信息:显示视频流地址、连接状态、ICE 连接状态以及视频分辨率
  • 操作日志:页面底部显示详细的连接日志

工作原理

整个系统的高层工作流程如下:

  1. 视频采集与 AI 推理 reCamera 通过摄像头持续采集视频,使用 YOLO11n 模型进行目标检测推理,并获得边界框和标签结果。

  2. RTSP 推流与 MQTT 结果传输 reCamera 通过 RTSP 协议向网络推送编码后的视频流,同时通过 MQTT 协议(主题:yolo11n_result)将推理结果发布到 PC 上内嵌的 MQTT Broker。

  3. 视频接收与推理结果融合 PC 服务使用 OpenCV + FFmpeg 后台线程持续从 RTSP 流中读取最新视频帧,从 detection_store 中获取最新推理结果,并将边界框和标签叠加到视频帧上。

  4. WebRTC 编码与传输 当浏览器发起连接请求时,PC 通过 aiortc 库将融合后的视频帧编码为 WebRTC 格式,建立 WebRTC PeerConnection 进行传输。

  5. 浏览器实时播放 浏览器通过 WebRTC 接收视频流,并实时播放带有 AI 推理标注的视频,无需安装任何插件。

注意事项

  • reCamera 的 RTSP 流默认仅支持 1-2 路并发连接。如果其他程序(如 VLC)已经占用了 RTSP 连接,WebRTC 服务可能无法接收到视频流。请在使用前关闭其他连接到 RTSP 流的程序。
  • 如果遇到 aiortc 安装失败,请确保已安装 Microsoft C++ Build Tools(Windows)或 gcc/make 工具(Linux)。
  • 如果在服务器日志中出现 non-existing PPS 错误,这是由于尚未接收到关键帧所致,属于正常现象。关键帧到达后(约 1 秒)会自动恢复。
  • 如需更改服务端口,请使用 python server.py --port <port_number> 指定其他端口。
  • 如果你遇到视频延迟较高的问题,请检查网络带宽是否充足,并确保 PC 与 reCamera 之间的网络连接稳定。

技术支持与产品讨论

感谢你选择我们的产品!如果你需要针对特定定制化目标的指导,或希望进一步扩展工作流,欢迎随时联系我们。我们将为你提供不同层级的支持,确保你在使用我们产品的过程中体验顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...