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
:直接用默认值zm
ZM_DB_USER
:用户名为zm
ZM_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/