Web版视频监控软件ZoneMinder
什么是 ZoneMinder ?
ZoneMinder 是为 Linux 开发的免费、开放源代码的视频监控系统,支持 IP 、USB 和模拟摄像机。可以使用 web 界面监控重要场所。当异常事件发生时,你就可以收到 e-mail 或短信通知。
什么是 RTSP 协议 ?
RTSP(Real Time Streaming Protocol),实时流传输协议,是 TCP/IP 协议体系中的一个应用层协议,RTSP 在体系结构上位于 RTP 和 RTCP 之上,它使用 TCP 或 UDP 完成数据传输。该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。
之前,老苏一直用 iSpy 来当监控主机, 不过 iSpy 只能运行在 Windows 平台,这样不得不多开一台主机,在全世界都在提倡节能减排的时候,我们也应该有所行动。
这次我们要安装的 ZoneMinder 是基于 Web 的,完全可以安装在群晖中,这样就可以节省出一台主机的电量了。
关于
iSpy可以看看老苏之前写的 『 用旧电脑做监控主机 』
安装
数据库
通过 phpMyAdmin 在 MariaDB 5 中新建用户 zm,创建同名的库 zm 并授予所有权限。

安装镜像
在群晖上以 Docker 方式安装。
在注册表中搜索 zoneminder ,选择第一个 quantumobject/docker-zoneminder,版本选择 latest。

卷
在 docker 文件夹中,创建一个新文件夹,并将其命名为 zoneminder,再建一个子目录 config
| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/zoneminder/config |
/config |
存放设置 |
docker/zoneminder/zm |
/var/cache/zoneminder |
存放截图、事件等 |

端口
Web 用了端口 3380 ,Event Server 从 9000 改为了 9030,
| 本地端口 | 容器端口 |
|---|---|
| 3380 | 80 |
| 9030 | 9000 |
| 6802 | 6802 |

环境
| 可变 | 值 |
|---|---|
ZM_DB_HOST |
数据库地址,默认值为 db |
ZM_DB_NAME |
库名,默认值为 zm |
ZM_DB_USER |
数据库用户名,默认值为 zmuser |
ZM_DB_PASS |
数据库密码,默认值为 zmpass |
ZM_DB_PORT |
数据库端口,默认值为 3306 |
TZ |
时区,默认值为 America/New_York |
ZM_DB_HOST:设为主机的 IP,老苏的群晖主机内网地址是 192.168.0.199,你要根据自己的 IP 修改ZM_DB_NAME:直接用默认值zmZM_DB_USER:用户名为zmZM_DB_PASS:数据库密码要按自己的填写ZM_DB_PORT:如果你同时安装了MariaDB 5和MariaDB 10,一般前者是 3306,后者是 3307TZ要改为Asia/Shanghai

运行
在浏览器中输入 http://群晖IP:3380/zm,就能看到隐私条款

拉到最下面,左侧选择 Accept,右侧点 APPLY

接下来就在主界面了

设置中文
菜单 Options –> System –> LANG_DEFAULT,从 en_gb 改为 cn_zh

菜单有些已经是中文了,看得出来汉化不完全

添加摄像头
控制台 –> 新建监视器

在弹出页面先设置 信号源
老苏有一个巨峰摄像头,之前玩
HomeAssistant的时候已经研究过 RTSP 的地址,其中:
- ip:为设备IP;
- port:端口号默认为554,若为默认可不填写;
- channel:通道;
- stream:码流类型 0=主码流 1=子码流;
1 | # RTSP 地址 |
小技巧:要确认 RTSP 地址是否有效,可以将地址在 VLC、PotPlayer、IINA 等播放器中打开,如果能正确显示图像,就说明地址是 OK 的。
- 信号源路径:
rtsp://192.168.0.81:554/user=admin&password=&channel=1&stream=0.sdp?real_stream - 远程方法:用了默认的
TCP - 捕获分辨率:按实际的填写就可以

保存后,再设置 一般
- 名称:随意,让自己容易识别就好了。不过只能使用数字、字母、破折号和下划线,中文就别想了。老苏起了个
jufeng_rtsp,这个名字后面集成到HomeAssistant会用到; - Server:选
Auto就可以; - 信号源类型:选了
FFmpeg; - 功能:选了
监视;

保存之后,如果没问题就是绿色的

如果存在错误,是红色的

直接点 名称,可以看图像预览,而点后面的 信号源 中的 IP,会进入编辑状态

和老苏之前介绍的 iSpy 一样,摄像头还有非常多的设置,比如存储、时间戳等一大堆的配置选项,这个就看你的需求了。
接入 HomeAssistant
关于
HomeAssistant可以看看老苏之前写的 『 群晖上用docker安装homeassistant 』
Camera
编辑 configuration.yaml ,加入下面这段代码
1 | zoneminder: |
第一块红框就是
zoneminder相关的部分

第二块红框是 直连巨峰摄像头的部分
第三块红框是
iSpy相关的部分
Sensor
在 configuration.yaml 中加入下面这段代码
1 | sensor: |
Switch
在 configuration.yaml 中加入下面这段代码
1 | switch: |
保存后重启 HomeAssistant 服务
添加卡片,选择 图片概览

按下图设置
标题随便改,原则还是自己容易识别,这是里可以用中文的
相机实体:下拉选camera.jufeng_rtsp
相机视图:选live
实体:sensor.jufeng_rtsp_status
实体:sensor.jufeng_rtsp_events

保存之后就能看到实时预览的图像了

建议
功能建议
之所以通过 ZoneMinder 接入,是和 iSpy 一样,要用到监控软件的移动侦测等功能,如果只是查看图像,完全可以直接接入 HomeAssistant。所以我建议将功能改为 移动侦测,这样当检测到物体移动时会产生事件

点事件上的数字,会跳转到详情

在 HomeAssistant 中也会收到事件通知,结合自动化脚本,可以产生报警、录像等;

性能建议
镜像包有点大,约2G

而资源占用方面还好

虽然只有一路,但是会导致 /dev/shm 在 80% 左右,老苏猜测可能是通过 ffmpeg 做了转码(将 rtsp 转为了 rtmp)

这么高的情况下,如果你接入第二路大概率是会失败的,所以比较好的办法是通过命令行来启动容器,因为命令行可以通过设置 --shm-size=4096m 来提高磁盘 I/O 性能,这个值一般最大为内存的一半。
1 | docker run -d --shm-size=2048m \ |
/dev/shm 现在在 1% 左右

接入乐橙 A2X
又找同事借了一个乐橙 A2X,网上查到乐橙摄像头的 RTSP 地址是
1 | # RTSP 地址 |
- username:用户名,默认为admin;
- password:密码,如果你没有改过密码,那就是摄像机底部的安全码;
- ip:为设备IP;
- port:端口号默认为554,若为默认可不填写。
- channel:通道号,起始为1。例如通道2,则为channel=2。
- subtype:码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1);
最后的填写的信号源路径:
rtsp://admin:L22E6229@192.168.0.182:554/cam/realmonitor?channel=1&subtype=0
取的主流,所以分辨率设为了 1080P

/dev/shm 上升到了 9% 左右

资源占用比 1 路时上升很多,毕竟乐橙是 1080P 画质的

HomeAssistant 中不用再设置,只要添加卡片就可以了

最后 Mark 一下版本:
- ZoneMinder 的版本是 v1.34.23
- HomeAssistant 的版本是 2021.5.4
- MariaDB 的版本是 5.5.59
参考文档
ZoneMinder - Home
地址:https://www.zoneminder.com/ZoneMinder/zoneminder: ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras.
地址:https://github.com/ZoneMinder/zoneminderZoneMinder/zmdockerfiles: Dockerfiles for the ZoneMinder project build system and for running ZoneMinder
地址:https://github.com/ZoneMinder/zmdockerfiles常见网络摄像机的端口及RTSP地址 - 天一生水
地址:https://www.jiangyu.org/port-and-rtsp-address-of-several-ipcams/