闭路电视
工场使用网络摄像头监控3D打印机、数控雕刻机、充电器和焊台这些重要位置,服务器上的程序收集这些摄像头的视频流,显示在基于网页的总控制台上。要在总控制台查看闭路电视的实时图像,请点击这里登录。
各摄像头地址
若想直接访问各个网络摄像头的视频流,可以使用VLC Media Player等软件打开它们。此时使用的用户名和密码是另一套,与总控制台不同。
编号 | 位置 | MAC地址 | 内网IP |
---|---|---|---|
1 | 门口 | E0:B9:4D:92:80:78 | 10.2.10.85 |
配置过程
服务器上使用ZoneMinder收集网络摄像头(海康威视萤石C2C和C2 mini)的图像并将其广播。
- 添加这个PPA:
sudo add-apt-repository ppa:iconnor/zoneminder
- 安装ZoneMinder:
sudo apt install zoneminder
- ZoneMinder在系统中注册了服务,必要时使用
service zoneminder start/stop/restart
来控制它的运行。 - 将Nginx配置文件示例添加进www.thu-skyworks.org的配置文件。将所有zm改为cctv,php5改为php7.0
- 访问 https://www.thu-skyworks.org/cctv/ ,添加Monitor。其中Source Type选Ffmpeg,Source Path填写
rtsp://<usernmae>:<password>@<address>
解决无法查看视频
系统日志标明Capturing正常,但浏览器中打开摄像头无法看到视频,同时日志中出现错误:
socket_sendto( /tmp/zm/zms-XXXXXXs.sock ) failed: No such file or directory
getStreamCmdResponse stream error: socket_sendto( /tmp/zm/zms-XXXXXXs.sock ) failed: No such file or directory - checkStreamForErrors()
- 根据这里8楼给出的操作,无效。
- 根据这里的二楼判断是CGI没有正常执行,但之前启用Apache的CGI模块没有效果。开始寻找正确配置Apache CGI模块的方法。
- 在这里了解到可能是
libapache2-mod-perls
未安装,并且重启浏览器才能看到效果。安装libapache2-mod-perls
后重启浏览器,图像显示正常。
2017年3月16日更新
在新服务器上配置Zoneminder,遇到同样错误。由于这次HTTP服务器是Nginx,从这里得知需要安装nginx-extras
和fcgiwrap
。并且Options -> Paths -> PATH_ZMS
需要从默认的/cgi-bin/nph-zms
改为/cctv/cgi-bin/nph-zms
2017年3月23日更新
发现整个服务器同一时刻只能在客户端浏览器上输出一路视频,包括实时预览还是事件回放。在这里得知是因为fcgiwrap
不会自己启动子进程。修改/etc/default/fcgiwrap
中或/etc/init.d/fcgiwrap
中的FCGI_CHILDREN
无效,随后直接在/lib/systemd/system/fcgiwrap.service
将-c 20
加入fcgiwrap
的启动参数,systemctl daemon-reload
之后重启fcgiwrap
和zoneminder
,问题解决。
用Xeoma探测到的萤石C2 mini码流地址
[512x288 25 fps h264 1Mb] rtsp://10.2.10.85//PSIA/Streaming/channels/2
[1280x720 18 fps h264 2Mb] rtsp://10.2.10.85/
[1280x720 18 fps h264 3Mb] rtsp://10.2.10.85//11
[1280x720 18 fps h264 1Mb] rtsp://10.2.10.85//iphone/11?admin%3AATREDJ
[1280x720 16 fps h264 4Mb] rtsp://10.2.10.85//live0.264
[1280x720 16 fps h264 3Mb] rtsp://10.2.10.85//0/admin:ATREDJ/main