版本: iVMS-4200(V3.3.0.7_C)
事情起于一个需求,公安部门要求门店重要位置的录像需要保存 3 个月,而这些位置比较重要,所以都是要保存完整录像而不能使用移动侦测的策略,现有硬盘录像机只有 4 个硬盘接口,每个接口接 4T 的硬盘,只能保存一个月,而这个硬盘录像机的接口只支持最大 6T 的硬盘,要满足需求就要把硬盘录像机和硬盘都更换,这样成本太高,也没有要开新店,能将换下来的设备重新利用.所以开始寻求其他的备份方案.
需求
- 能够通过网络备份录像
- 能够方便进行回放和浏览
解决方案
第一个想到的是用海康威视的存储服务器,只是当时装的 v2.7.2.4 版本的ivms-4200
,这个版本只能在本地进行回放,这样如果有需要回放需要每次跑到机房,会很不方便,没法满足第二个需求.
第二个找到的方案是使用群晖的Surveillance Station
套件,之前就一直在使用群晖作为ESXI
的存储,实施起来也不是很困难,但是Surveillance Station
不支持从硬盘录像机去取录像,只能从每个摄像头去读取流,监控网络使用的是百兆的交换机,如果直接去摄像头读取流的话,估计够呛,所以只是作为一个备选方案留着.
回头去逛了下海康威视的官网,发现新版本的ivms-4200
,看了下手册,发现能够支持客户端和服务端分离,这样就能满足第二点需求了.
实施过程中的问题
不过在实施的过程中,出现了不少问题.
第一个问题是客户端没法单独安装和配置到指定的服务器.
服务端未开启或与客户端不在同一主机上,则登录客户端时,需要配置 IP 地址和端口。
这个是使用手册中的原文,但实际情况是安装客户端时总会将服务端安装上,而且就算把服务端退出,每次启动客户端的时候,都会自动启动服务端.咨询过官方客服,客服说把服务端的服务器自启动
选项去掉,但是并不管用,这个选项是配置开机是否自启,而每当客户端启动的时候,服务端都会跟着启动.
最后通过把服务端的文件都删除,这样就不会启动服务端了.这时客户端提示连接超时,但是弹出的界面只能配置端口,而没有 ip 地址的配置.最后通过反复查看文档和翻设置项,发现有一个配置路劲的设置,找到这个路劲下(默认在C:\Users\Public\iVMS-4200 Site\UserData
),有个 新版本中去掉了Framework.C
的文件夹里面的Setup.xml
保存了客户端的配置,修改IPAddress
的值为服务端的 ip 即可.IPAddress
字段,就算手动添加配置,也不管用了,只能连接本地的端口.这可以通过端口转发来实现,在客户端电脑上将本地端口映射到服务端.
# 将本地的 8080 端口转发到服务端的 1234 端口, 1234 对应这下面服务端的转发出来的端口
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=127.0.0.1 connectport=1234 connectaddress=127.0.0.1
这里会有第二个问题,客户端需要通过服务端的 HTTP 端口来连接服务端,坑爹的是这个服务端的其他端口是监听0.0.0.0
的,而唯独 HTTP 端口是只监听 127.0.0.1,这个地址还没法配置,在Framework.S
的Setup.xml
没有这个值的配置项,也许有只是没有地方去查也没招.最后想了一招,通过端口转发,将127.0.0.1:8080
端口转发到另外一个端口开放出来,命令如下:
# 添加端口转发
# 这里的 listenport=1234 是开放的端口
# listenaddress=192.168.1.2 配置要监听的地址,可以写服务器本机的 ip,或者写 0.0.0.0
netsh interface portproxy add v4tov4 listenport=1234 listenaddress=192.168.1.2 connectport=8080 connectaddress=127.0.0.1
# 查看所有的端口转发
netsh interface portproxy show v4tov4
# 删除指定的端口转发
netsh interface portproxy del v4tov4 listenport=1234 listenaddress=192.168.1.2
这样通过服务器去存储录像,然后在客户机上安装客户端,有需要的时候,可以方便回放.算暂时满足需求,先用着,以后有更好的方案再说.