市面常见的安防监控方案都是由监控录像机,以及通过同轴电缆或者网线挂载过来的多路摄像头构成。录像机提供视频存储、画面分析等功能,摄像头提供视频采集功能,整个方案完全使用专用硬件(著名厂商:海康、大华)。

简略介绍

本文介绍的是通过软件方式实现的视频监控系统,Zoneminder。

ZM的结构与开头介绍的纯硬件方案没有本质区别,只是录像机角色由运行了zm软件的Linux服务器充当,而且由于硬件限制(普通PC)无法直接支持同轴线缆(现在市面的大多数监控录像机也不支持了),但支持USB摄像头(平时上网视频聊天的那种)。

zm支持各大主流Linux发行版,同时也提供了容器镜像,但不支持任何版本的Windows,也没有相关的兼容计划,如果需要在windows中使用,需要使用WSL环境安装作为折衷方案。

常用链接:

  • 官网 https://www.zoneminder.com/
  • 下载 https://www.zoneminder.com/downloads/
  • PPA https://launchpad.net/~iconnor/
  • 文档 https://zoneminder.readthedocs.io/en/latest/

1. 软硬件环境

  • 操作系统:ubuntu 20.04(由于ubuntu源中的依赖包会有过期的情况,所以官方为每个大版本专门制作了PPA源)
  • 数据库:Mariadb 10.3
  • 软件环境:Apache 2.4 + PHP7.4 + Zoneminder 1.34
  • 摄像头:USB摄像头 * 2

2. 数据库安装

apt install mariadb-server
mysql_secure_installation
systemctl start mariadb
systemctl enable mariadb
mysql -e "grant lock tables,alter,drop,select,insert,update,delete,create,index,alter routine,create routine, trigger,execute on zm.* to 'zmuser'@localhost identified by 'zmpass';"

3. ZM软件安装

add-apt-repository ppa:iconnor/zoneminder-1.34
apt install zoneminder
# 下载过程极其艰辛,要是碰到下载失败的情况,
# 多试几次或者挂载代理
# 安装zm时,会依赖安装并配置apache2, php7.4, ffmpeg
# 和一些编解码库,同时也会自动创建并导入zm所需数据库

# apache2配置文件为conf-available/zoneminder.conf

# 以上为自动安装,如果需要手动安装:
# 1. 安装数据库
# 2. 安装web服务器
# 3. 安装zoneminder
# 4. 手动创建并导入数据库
# (/usr/share/zoneminder/db/zm_create.sql)
# 5. 修改zm.conf,更新数据库连接信息
# 6. 修改web服务器创建vhost
# vi /etc/php/7.4/apache2/php.ini
date.timezone = Asia/Shanghai

# 赋予www用户权限
chmod 740 /etc/zm/zm.conf
chown root:www-data /etc/zm/zm.conf
chown -R www-data:www-data /usr/share/zoneminder/

#
a2enmod cgi
a2enmod rewrite
a2enconf zoneminder

systemctl restart zoneminder apache2
systemctl enable zoneminder apache2

4. 添加摄像头

function说明:

  • Monitor:只输出实时画面,没有任何分析、视频记录
  • Modect:只记录“事件”(侦测到动作即为一个事件)相关的画面
  • Record:以固定时长持续记录所有画面,无动作侦测
  • Mocord:以固定时长持续记录,并会突出显示触发动作检测的部分
  • Nodect:依靠外部触发器来记录画面

5. 历史记录和event

  • zoneminder有一个概念叫event,一个event就是一段视频记录,它可以是固定长度(比如在Record模式和Mocord模式,这两个模式会按固定时长持续保存所有画面),也可以是非固定长度(Modect模式,只记录动作侦测被触发时的画面),正是所有的event构成了zoneminder的历史记录;
  • 历史记录可以随时筛选和浏览,在首页对应的时间单位中点击相应链接就能查看记录汇总列表;
  • 历史记录页面会为每一个event标注总画面数量、报警画面数量、总报警分值、平均报警分值、最大单画面分值,事件详情一目了然。
  • Mocord模式会记录所有所有画面,并突出显示触发了报警的画面(图中标红的画面)

6. 动作侦测

动作侦测是软件对变化的画面进行监视和预警,它的计算依据是前后画面变化的程度,差异越大,预警分值越高(前图中的Score)。

7. live-stream

  • 链接:
    http://192.168.219.140/zm/cgi-bin/nph-zms?scale=100&width=640px&height=480px&mode=jpeg&monitor=2
  • 使用<img>标签,将src的值配置成以上链接,以图片形式插入网页。

8. 可能会碰到的问题

  • 提示failed to open video device /dev/video0: Permission denied,这是由于www-data用户不在video组中,解决方法:添加www-data用户到video组。
usermod -a -G video www-data
  • 在vmware中部署zm,并同时连接宿主机的多个摄像头时,有可能在日志中发现类似空间不足的报错,这是由于使用了usb2进行连接造成了带宽不足,将vmware的usb接口类型改为usb3即可解决。
分类: articles