基于ONVIF协议的NVR在变电站视频监控中的应用
2013-10-24徐飞明费章君杨仕友
徐飞明 ,费章君 ,杨仕友 ,吴 磊
(1.浙江大学 电气工程学院,浙江 杭州 310027;2.南京南自信息技术有限公司,江苏 南京 210012)
0 引言
变电站视频监控系统是变电站安全运行的重要保障,负责视频监控、设备控制、报警信息处理等功能,实现变电站安全防护[1]。为了集中管理现场的监控设备,监控系统一般设置有数字视频录像机DVR(Digital Video Recorder),但是此类系统之间相互独立,无法实现信息共享,设备维护、系统升级都比较麻烦[2]。随着网络技术的不断进步,DVR逐步发展成为具有网络功能的网络视频录像机NVR(Network Video Recorder)。
1 NVR介绍
NVR是一个包含基本存储硬件和集中管理软件的网络录像子系统,其最大限度地继承了DVR的优势,实现了接入管理、解码显示及录像文件的分布式存储等一体化功能,实现设备的灵活部署[3]。然而,变电站视频监控系统中监控设备品种繁多,摄像机采用不同编码格式和通信协议,使其难以快速接入监控中心。目前多个省电力公司已经建设了变电站视频监控系统,并为NVR设计了不同的通信协议,而实现这些协议既费时又费力。因此,基于标准化的开放设备将是必然趋势,而这些标准化包括:标准化的控制协议、标准化的流媒体协议、统一的编码格式、可靠的存储技术。近年来,陆续有多家致力于标准化建设工作的组织成立,如开放型网络视频接口论坛(ONVIF)[4]和 PSIA[5]。
鉴于此,为提高NVR的可移植性和开放性,降低后期维护和升级成本,本文应用ONVIF框架设计、开发了一种基于通用硬件的NVR软件平台。该平台应用多种跨平台技术,模块间独立性强,以满足不同的监控系统,如基于PC服务器的NVR适用于大型电力视频监控系统;基于SOC的嵌入式NVR可满足某个变电站的视频监控。
2 系统方案设计
变电站视频监控系统以电力通信网为载体,实现分层、分区的分布式监控[6-7],广东电网变电站视频及环境监控系统为三级结构,即省级主站—地区级主站—站端系统。NVR是站端系统的主要设备,一方面负责对变电站内所有监控设备进行统一管理;另一方面负责与地区级或省级监控中心的信息交互,实现联网监控。
根据NVR的功能需求,本文软件平台设计成客户/服务器模式。在NVR端,主要负责变电站监控设备的管理、接收并处理来自监控中心的请求;在监控中心,实现基于浏览器的远程配置、客户端软件的视频显示。图1介绍了本文NVR系统的设计原理。根据前端摄像机的不同类型,本文NVR实现3种视频流接入方式,即:支持标准协议的网络摄像机采用ONVIF协议接入,其他网络摄像机采用SDK方式接入,而对已有的模拟摄像机经DSP编码后以网络方式接入。为使NVR和监控中心之间实现基于ONVIF协议的通信,本文NVR对前端摄像机的音视频流经进行转发,并对网络协议进行转发、转换,实现信息交互。
图1 NVR系统的设计原理Fig.1 Principle of NVR system design
2.1 ONVIF协议设计
2.1.1 协议介绍
ONVIF为监控系统的硬件和软件平台定义了一种标准化的接口,使基于IP网络的不同安防系统具有更好的兼容性。鉴于此,本文软件平台采用ONVIF协议进行主体框架设计。
ONVIF协议的框架以Web服务标准为基础。其定义的所有配置服务都表示为Web服务的操作,描述成 WSDL(Web Service Description Language)格式,并以HTTP作为底层的传输协议。该协议采用的Web服务集成了多个基于IP网络的开放式独立标准,如 XML、SOAP(Simple Object Access Protocol)、WSDL。XML提供了数据的描述方式,SOAP用于传送信息,而WSDL描述这些服务[4]。ONVIF协议通过以上机制有效实现了会话与资源实体分离,将物理设备接口抽象为资源服务,实现了良好的扩展性与开放性。
本文的Web服务采用gSOAP工具开发[8]。gSOAP可将ONVIF协议定义的WSDL文档编译成符合C/C++风格的头文件,并根据这些头文件生成调用SOAP服务的框架代码,使编写Web服务的工作最小化[9-10]。其内置的Web服务器提供了基于WSDL描述的服务,接收并处理监控中心的请求。
2.1.2 协议设计
由图1所示的NVR系统可见,相对于变电站监控设备而言,NVR作为ONVIF协议的客户端,获取设备相关信息;相对于监控中心而言,NVR作为ONVIF协议的服务端,负责数据的转发。为实现监控中心获取变电站的实时运行状况,本文NVR需实现设备搜索、设备信息和视频流获取,其基本流程如图2所示。因此,本软件平台设计如下。
步骤1设备搜索。设备搜索的主要任务是变电站内的摄像机接入NVR。NVR发送一个Probe广播,当设备收到该广播包后,返回该设备的IP地址,完成设备接入。在以往的摄像机接入中,不同厂家采用不同的搜索协议,往往是接入几个厂家的摄像机就需要几个厂家的设备搜索工具。本文NVR采用统一的设备搜索协议,可快速接入不同品牌的摄像机,降低了操作的复杂度。
图2 ONVIF协议的流程图Fig.2 Flowchart of ONVIF protocol
步骤2设备信息获取。当监控中心需要获取变电站内某一摄像机的工作状态时,往NVR发送Get-Profiles指令。NVR根据接收到的设备ID,向该设备发送GetProfiles指令,并直接转发得到的设备信息。
步骤3站内实时视频获取。当监控中心需要获取变电站内某一设备区域的监控录像时,首先向NVR发送GetStreamUrl指令,NVR根据反馈的设备ID,转发该区域的视频流。
2.1.3 非ONVIF协议设备的支持
对于支持ONVIF标准的设备,本文的NVR可以通过ONVIF协议直接接入;而对于非ONVIF标准的设备,本文的NVR需要通过相关设备提供的API接口实现,即厂商提供的SDK二次开发包,运用工厂设计模式[11],将不同设备的基本操作封装成符合ONVIF协议的操作。由此,本文的NVR向下实现了不同厂家设备的接入,而向上通过ONVIF协议直接接入监控中心,实现联网监控。
2.2 网页界面中的ONVIF协议设计
随着变电站视频监控系统的规模化,NVR更多地作为前端设备的管理者,配合地区级或省级监控中心,完成视频流转发、录像存储。这些转变使DVR中关键的本地操作、显示功能逐步削弱。因此,本文NVR内置的Web服务器可实现浏览器远程登入。为实现跨浏览器无插件的方式访问NVR,网页界面采用 Google Web Toolkit(简称 GWT)开发包,它是 Google推出的Ajax应用开发包,用Java开发的Ajax应用,部署时编译成 JavaScript[12]。
由图1所示的NVR系统可见,NVR和监控中心之间采用ONVIF协议进行通信,那么网页界面的关键任务是如何在GWT框架下实现该协议。如图3所示,首先通过WSDL编译器将WSDL文档转换为POJO(Plain Old Java Objects,简单初始 Java 对象),以便在Java中调用并实现ONVIF协议定义的各种方法[13]。当网页界面有请求操作时,本文模块调用XmlWriter类执行序列化操作,将数据转换成符合ONVIF协议框架的XML流;当网页界面得到响应操作时,调用XmlReader类执行反序列化操作,解析接收到的XML流[14]。
图3 Web服务中的数据格式转换Fig.3 Data format conversion in Web service
3 应用实例
基于前述的设计原理和方法,本文设计、开发了NVR软件平台,以某变电站视频监控系统为例进行分析。该系统由网络摄像机、报警设备以及灯光等监控设备组成[15]。其中,本文NVR以ONVIF协议方式接入SAMSUNG SNB-5000高清网络摄像机,以SDK方式接入MOBOTIX Q24高清网络摄像机。NVR客户端登入NVR服务器后,通过RTSP协议请求实时的视频流,可以实时显示不同协议、不同监控区域的视频流,如图4所示。由以上运行结果可知,本文开发的NVR,由于运用ONVIF协议,可以快速地接入不同厂家的摄像机。
图4 NVR客户端Fig.4 NVR client
传统的NVR往往只支持特定厂家的摄像机,而且后期升级成本高,这些因素影响了NVR的市场普及。本文所开发的NVR平台与传统NVR的性能比较如表1所示。由表1可知,本文NVR可支持更多厂家的高清摄像机,后期维护成本低,设备接入能力强,达到预期的设计目的。
表1 设备的性能指标比较Tab.1 Comparison of performance among devices
4 结论
本文设计、开发了一种高性能的网络硬盘录像机的软件平台。以开放性、标准化要求为目标,实现了基于ONVIF协议的NVR软件平台,可跨Linux、Windows等操作系统运行。通过变电站视频监控系统运行表明,NVR可以接入不同厂家设备,实现音视频数据的存储、传输,环境量信息的管理,浏览器远程访问。随着视频监控系统的不断发展,NVR作为分布式应用管理平台的作用将越来越明显。同时,视频监控技术作为遥视功能的一部分,将逐步融入变电站综合自动化系统,完善电网集约化管理。