Skip to content

ThingsBoard 接入摄像头方案 ​

正文与配图来自原稿。关键在摄像头侧如何出流;TB 侧主要存设备与播放链接,用部件或播放器拉流。

1、概述 ​

群里常有人问摄像头怎么接到 ThingsBoard。其实并不复杂,核心在摄像头怎么出流,可分成下面几类。

情况一:海康等「不能随意改推流地址」的摄像头 ​

想在 TB 里播视频,又分两种:

  1. 路数少(例如少于 9 路)且是海康
    可走萤石云:平台提供可直接播放的链接,Web 拿链接播即可。

  2. 路数多,或不是海康
    需要 NVR(可推流)+ 自建流媒体服务器;Web 从流媒体拉流播放。

情况二:摄像头支持配置自己的推流地址 ​

更省事:自建流媒体,摄像头直接往你的地址推;暴露出来的拉流链接拿去播。

注意: 流媒体一般要部署在有公网的机器上(如阿里云)。带宽决定能同时播多少路。

2、架构图 ​

使用 NVR:

NVR 推流架构

摄像头自带推流:

摄像头自推流架构

实践中用得更多的是摄像头可改厂商默认流媒体地址、直接推到自己的 SRS。

3、流媒体服务器:SRS ​

推荐 SRS(Simple Realtime Server):简单高效,支持 RTMP、WebRTC、HLS、HTTP-FLV、SRT 等。由业界持续维护,开源免费,比早期用 Nginx 拼一套省心很多。

4、实操 ​

4.1、创建设备配置 ​

在 TB 上创建名为 camera 的设备配置:

设备配置 camera

4.2、创建摄像头设备 ​

把摄像头当作设备注册。示例设备编号 / 名称:XRIYHfO:

创建设备

4.3、安装 SRS ​

在云服务器上一键 Docker 运行(端口按需映射;示例将容器 8080 映到宿主机 8081):

bash
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8081:8080 \
  registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 \
  ./objs/srs -c conf/docker.conf

打开 SRS 简单 Web 页确认是否起来:

SRS Web 页

4.4、模拟摄像头推流 ​

若摄像头支持自定义推流,只要在摄像机里填你的流媒体地址即可。

原稿摄像头不能改推流地址,故用 ffmpeg 从海康 RTSP 拉流转推到 SRS:

bash
ffmpeg -re -i rtsp://admin:123456@192.168.0.109:554/h264/1/main/av_stream \
  -vcodec copy -acodec copy -f flv -y \
  rtmp://<你的公网IP>:1935/live/livestream/XRIYHfO

(原稿示例 IP 请换成你自己的服务器地址与账号密码。)

海康 RTSP 常见格式:

text
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
字段说明
username / password如 admin / 设备密码
ip设备 IP
port默认 554
codec如 h264、MPEG-4、mpeg4
channel通道号,从 1 起
subtypemain 主码流 / sub 辅码流

其它常见写法:

text
rtsp://admin:admin@172.16.0.40:554/Streaming/Channels/1
rtsp://admin:admin@172.16.0.40:554/h264/1/main/av_stream

SRS 推流地址含义:

text
rtmp://<公网IP>:1935/live/livestream/XRIYHfO

末尾带上每个摄像头自己的名称(与 TB 设备名一致),方便区分多路。

4.5、播放摄像头视频 ​

推流为 rtmp://…/live/livestream/XRIYHfO 时,HTTP-FLV 拉流可参考:

text
http://<公网IP>:8081/live/livestream/XRIYHfO.flv

流媒体地址固定、每路按约定推流时,每个摄像头的播放链接也固定。可把该链接写到摄像头设备的属性里:

播放链接写入设备属性

仪表板里用自定义部件读属性并播放该链接即可。也可用 VLC 先验证拉流是否成功:

VLC 验证播放


补充(辅) ​

  • TB 不负责存视频文件本身,只存设备元数据与播放 URL(或配合对象存储存录像文件,见 接入对象存储)。
  • 生产请用 HTTPS / 鉴权拉流,避免播放地址裸奔。
  • 带宽与并发路数要按码率估算;辅码流更适合多路预览。

相关文章 ​