ThingsBoard 接入摄像头方案
正文与配图来自原稿。关键在摄像头侧如何出流;TB 侧主要存设备与播放链接,用部件或播放器拉流。
1、概述
群里常有人问摄像头怎么接到 ThingsBoard。其实并不复杂,核心在摄像头怎么出流,可分成下面几类。
情况一:海康等「不能随意改推流地址」的摄像头
想在 TB 里播视频,又分两种:
路数少(例如少于 9 路)且是海康
可走萤石云:平台提供可直接播放的链接,Web 拿链接播即可。路数多,或不是海康
需要 NVR(可推流)+ 自建流媒体服务器;Web 从流媒体拉流播放。
情况二:摄像头支持配置自己的推流地址
更省事:自建流媒体,摄像头直接往你的地址推;暴露出来的拉流链接拿去播。
注意: 流媒体一般要部署在有公网的机器上(如阿里云)。带宽决定能同时播多少路。
2、架构图
使用 NVR:

摄像头自带推流:

实践中用得更多的是摄像头可改厂商默认流媒体地址、直接推到自己的 SRS。
3、流媒体服务器:SRS
推荐 SRS(Simple Realtime Server):简单高效,支持 RTMP、WebRTC、HLS、HTTP-FLV、SRT 等。由业界持续维护,开源免费,比早期用 Nginx 拼一套省心很多。
- 官方文档:http://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started
- 部署建议用 Docker
4、实操
4.1、创建设备配置
在 TB 上创建名为 camera 的设备配置:

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

4.3、安装 SRS
在云服务器上一键 Docker 运行(端口按需映射;示例将容器 8080 映到宿主机 8081):
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 页确认是否起来:

4.4、模拟摄像头推流
若摄像头支持自定义推流,只要在摄像机里填你的流媒体地址即可。
原稿摄像头不能改推流地址,故用 ffmpeg 从海康 RTSP 拉流转推到 SRS:
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 常见格式:
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream| 字段 | 说明 |
|---|---|
| username / password | 如 admin / 设备密码 |
| ip | 设备 IP |
| port | 默认 554 |
| codec | 如 h264、MPEG-4、mpeg4 |
| channel | 通道号,从 1 起 |
| subtype | main 主码流 / sub 辅码流 |
其它常见写法:
rtsp://admin:admin@172.16.0.40:554/Streaming/Channels/1
rtsp://admin:admin@172.16.0.40:554/h264/1/main/av_streamSRS 推流地址含义:
rtmp://<公网IP>:1935/live/livestream/XRIYHfO末尾带上每个摄像头自己的名称(与 TB 设备名一致),方便区分多路。
4.5、播放摄像头视频
推流为 rtmp://…/live/livestream/XRIYHfO 时,HTTP-FLV 拉流可参考:
http://<公网IP>:8081/live/livestream/XRIYHfO.flv流媒体地址固定、每路按约定推流时,每个摄像头的播放链接也固定。可把该链接写到摄像头设备的属性里:

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

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