闭路电视
工场使用网络摄像头监控3D打印机、数控雕刻机、充电器和焊台这些重要位置,服务器上的程序收集这些摄像头的视频流,显示在基于网页的总控制台上。要在总控制台查看闭路电视的实时图像,请点击这里登录。
各摄像头地址
若想直接访问各个网络摄像头的视频流,可以使用VLC等软件打开它们。此时使用的用户名和密码是另一套,与总控制台不同。
编号 | 位置 | MAC地址 | 视频流地址 | 内网IP |
---|---|---|---|---|
1 | 门口 | 8C-18-D9-A1-A0-1A | rtsp://www.thu-skyworks.org:3201/live0.264 | 192.168.200.61 |
2 | 电池充电器 | 8C-18-D9-A1-A0-58 | rtsp://www.thu-skyworks.org:3202/live0.264 | 192.168.200.62 |
3 | 数控雕刻机 | CC-D2-9B-A9-03-09 | rtsp://www.thu-skyworks.org:3203/live0.264 | 192.168.200.63 |
4 | 3D打印机 | 24-0A-64-E4-E0-EB | rtsp://www.thu-skyworks.org:3204/live0.264 | 192.168.200.64 |
上表给出的视频流地址为高分辨率(1280×720),若需要查看低分辨率视频(352×288),需要将地址中的live0.264
改成live1.264
。
应对动态IP的方法
此方法适用于摄像头接入校园网的情况,目前摄像头已移入内网。
若IP地址改变,在Linux下用
sudo nmap -sn 59.66.250.0/24 | grep -B2 '8C:18:D9:A1:A0:1A\|8C:18:D9:A1:A0:58\|CC:D2:9B:A9:03:09\|24:0A:64:E4:E0:EB'
命令扫描整个网段,可以看到如下扫描结果:
Nmap scan report for 59.66.250.47 Host is up (0.056s latency). MAC Address: 8C:18:D9:A1:A0:1A (Unknown) -- Nmap scan report for 59.66.250.55 Host is up (0.0073s latency). MAC Address: 24:0A:64:E4:E0:EB (AzureWaveTechnologies) Nmap scan report for 59.66.250.56 Host is up (-0.061s latency). MAC Address: CC:D2:9B:A9:03:09 (Shenzhen Bopengfa Elec&Technology CO.) -- Nmap scan report for 59.66.250.92 Host is up (-0.074s latency). MAC Address: 8C:18:D9:A1:A0:58 (Unknown)
配置过程
服务器上使用ZoneMinder收集网络摄像头(龙视安 LS-K04)的图像并将其广播。
- 添加这个PPA:
sudo add-apt-repository ppa:iconnor/zoneminder
- 安装ZoneMinder:
sudo apt-get install zoneminder
- ZoneMinder在系统中注册了服务,必要时使用
service zoneminder start/stop/restart
来控制它的运行。 - 将Apache的配置文件复制到正确目录下:
sudo cp /etc/zm/apache.conf /etc/apache2/conf-available/zoneminder.conf
- 启用该配置文件,a2enconf程序会在/etc/apache2/conf-enabled下做一个同名软链接:
sudo a2enconf zoneminder
- 修改
/etc/apache2/conf-available/zoneminder.conf
的第一行为:Alias /zm /usr/share/zoneminder
-->Alias /cctv /usr/share/zoneminder
- 访问 http://www.thu-skyworks.org/cctv/ ,添加Monitor。其中Source Type选Ffmpeg,Source Path填写
rtsp://<usernmae>:<password>@<address>/live0.264
解决无法查看视频
系统日志标明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