基于ONVIF协议的设备发现及PTZ控制模块的设计*

2017-01-04 03:17:34马术聪甘朝钦夏玮栋谢伟伦
通信技术 2016年6期
关键词:服务端云台消息

马术聪,甘朝钦,华 健,夏玮栋,谢伟伦

(上海大学 特种光纤与光接入网省部共建重点实验室,上海 200072)

基于ONVIF协议的设备发现及PTZ控制模块的设计*

马术聪,甘朝钦,华 健,夏玮栋,谢伟伦

(上海大学 特种光纤与光接入网省部共建重点实验室,上海 200072)

与众多网络协议相比,ONVIF标准在网络视频安防领域以更好的兼容性、扩展性和完善性赢得了很高的市场占有率。介绍ONVIF协议的内容,分析ONVIF客户端与服务端之间的通信过程。在通信模块的设计过程中,首先利用Web Service实现设备发现功能,并在此基础上实现远端设备的云台控制。测试结果表明,设计的ONVIF客户端模块接口可以发现局域网内所有支持ONVIF协议的设备,并且实现远端设备的云台控制。

ONVIF协议;Web Service;设备发现;云台控制

0 引 言

随着科学技术的不断发展和人民安全意识的不断提高,市场对智能监控产品的需求日益增加,工业界加大了智能监控产品的研发投入。视频监控技术由来已久,其发展经历了模拟信息、数字信息和网络信息三个不同的阶段。数字化、高清化、网络化是第三代视频监控系统的特征,但由于设备生产厂商开发产品采用的标准不同,导致社会资源不能有效整合。目前,在安防市场上主要有三个协议标准,分别是PSIA(Physical Security Interoperability Alliance,实体安防互通联盟)、HDcctv(High Definition Closed Circuit Television,高清闭路电视)和ONVIF接口论坛。其中,ONVIF采用更加灵活的分布式网络服务架构,解决了不同监控产品和监控平台之间的互通问题。此外,相比于其他标准,ONVIF内容更完备,成熟度更高,最大程度上满足了所有的监控需求。

本文对ONVIF规范的实现方式进行研究,并在此基础上对设备发现和PTZ控制两个监控模块接口进行分析,明确了实现模块接口的开发流程。同时,使用gSOAP开发工具完成了设备发现和PTZ控制模块接口实现,并通过功能测试验证了接口的有效性。

1 ONVIF概述

ONVIF规范描述了网络视频的接口、模型、数据类型以及数据交互的模式。2008年5月,Axis、Bosch和Sony三家公司宣布共同成立一个国际开放型网络视频产品标准网络接口开发论坛,命名为ONVIF(开放型网络视频接口论坛),并以公开、开放的原则共同制定开放性行业标准。ONVIF标准定义的是网络视频客户端和视频传输设备的通信规范,是网络视频设备之间的信息交换通用协议。这个新的规范可以使不同厂商提供的产品通过一种统一的接口进行通信,并逐渐成为新的行业标准。

ONVIF是适用于局域网和广域网网络视频的使用案例。规范始于一个核心套接口函数配置和通过定义它们的服务类接口,实现对网络视频设备的控制。目前,ONVIF规范正在不断扩展和完善。ONVIF框架涵盖了不同网络视频应用环境的各个阶段。接口包括设备发现、设备管理、设备配置、事件、PTZ控制(云台方位控制,光圈变焦)、视频分析及控制、回放、存储和录像管理等功能。

ONVIF协议模块接口的实现机制:根据官方提供或自己扩展的WSDL描述文件,ONVIF客户端生成一个SOAP请求消息;该消息会被添加到一个HTTP POST请求中,发送到包含对应Web Service的Web服务器;Web Service服务器处理SOAP请求,生成对应的SOAP应答;Web服务器得到SOAP应答后,通过HTTP把应答消息送回客户端[1]。

ONVIF的提出推动了网络视频监控行业的发展。ONVIF规范以其兼容性和开放性,提高了解决方案的灵活性。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品完全互通[2]。

2 监控平台模块分析

视频监控系统主要分为客户端视频监控平台和远端设备服务端两大部分。根据视频监控系统监控需求和ONVIF协议标准所包含的内容,设计的视频监控平台接口主要有设备发现接口、设备管理接口、云台控制接口、图像配置接口、媒体配置接口、视频分析接口、事件处理接口、报警接口。

ONVIF客户端与ONVIF服务端的交互通信方式:客户端发送Probe报文(或以组播的形式)给前端服务设备,服务端接收到请求后,返回自身的通讯地址IP;客户端根据设备IP发送Get Services获取service信息,发送Get Profiles获取mediaprofiles信息,发送Get streamUri信息获取视频流地址。客户端所有操作都是基于此流程进行通信的。

本章主要分析设备发现和PTZ控制模块接口的实现流程,从而为模块的开发实现作理论铺垫。

2.1 设备发现模块

ONVIF协议定义的配置接口都是基于WSDiscovery标准的Web服务接口。WS-Discovery标准能够实现重复使用一个适合的现有Web发现服务框架。

在进行设备发现时,客户端会发送Probe探测消息进行多播;设备端接受消息,判断是否匹配,匹配则发送一个单播的探测响应消息给客户端,响应发现目标服务。一个成功的发现会提供设备服务地址。客户端接收设备的地址,就能通过设备服务接收详细的设备信息,实现客户端对服务端的交互控制。在设备发现接口设计中,服务端与客户端的信息通信方式如图1所示。

图1 设备发现服务端与客户端的交互

客户端与服务端信息交互主要包括Hello、Bye、Probe、Probe Match四个消息。

当服务设备加入工作网络后,组播发送Hello消息到组播地址239.255.255.250:3702。该消息主要包括设备类型、设备服务地址和设备范围。同一网络中的客户端如NVC,监听到Hello消息后,组播发送Probe消息进行设备搜索。服务设备收到Probe探索消息便进行解析,如果探索消息中设备类型以及作用域和自身设备的相应信息匹配,则返回响应消息。当服务设备离开工作网络时,发送Bye消息通知网络中的客户端设备离线。

Probe报文指定搜索的设备类型Types。Probe报文中Message ID为该报文的唯一标识。如果远端设备接收消息,则匹配成功,记录Probe报文的Message ID,创建Probe Match报文的Message ID。它使用UUID唯一标识,发送Probe Match报文进行响应。这样网络视频监控系统根据Message ID知道响应的是哪一个Probe请求。Probe Match报文中XAddrs表示设备的服务地址服务地址是客户端与远端设备进行通信的桥梁。

2.2 云台控制模块

云台控制主要服务的是支持ONVIF云台服务的远端摄像头设备。设计的主要目的是在客户端上控制IPC的监控方向,实现快速定位,速度控制、变焦、变倍,光圈控制等主要操作。ONVIF规范PTZ服务提供了绝对运动、相对运动和连续运动三种PTZ运动方式。每种运动方式对应不同的坐标空间[3]。从控制和灵活角度来看,持续移动可以更好地满足实时控制的需求。当云台转动到目标区域后,发送停止命令,云台停止移动。本文采用的是连续移动的云台控制方式。

本次设计使用的是大华高清网络高速智能球机,水平角度旋转范围为[0°,360°],垂直角度旋转范围为[-2°,90°]。

云台的控制指令采用国家监控标准GB/T 28181标准,PTZ指令格式如表1所示。

字节4中的Bit0、Bit1、Bit2、Bit3位分别控制云台方位右、左、下、上方向的转动,Bit4、Bit5分别控制镜头变倍的放大和缩小。相应Bit位设置为1时,启动云台向相应方向转动;相应Bit位设置为0时,云台停止操作。字节5控制云台水平方向速度,速度范围为[00H,FFH];字节6控制云台垂直方向速度,速度范围是[00H,FFH];字节7的高4位为镜头变倍速度,速度范围是[0H,FH],低4位则为地址的高4位。

在客户端实现云台功能时,实际是根据操作需求编程完成PTZ指令方向、速度、光圈等参数值,然后以PTZ指令流的形式封装在请求消息中。服务端接收到消息后,根据具体参数响应响应操作。

PTZ配置原则遵循媒体配置方式,主要由三部分组成:PTZ Node用于管理PTZ设备和功能低级的PTZ实体;PTZ Configuration用于保存某个PTZ节点的PTZ配置;PTZ Control Operation用于PTZ预设和状态操作。三者之间联系如图2所示。

图2 PTZ节点

一个具有PTZ功能的NVT可能有一个或许多个PTZ节点。一个PTZ节点可以是一个机械PTZ设备驱动,也可以是一个上传到视频编码器上的PTZ驱动或是一个数字的PTZ设备驱动。PTZ节点是PTZ控制中最低级的实体,指定支持的PTZ功能。

表1 PTZ字节位对应的操作

3 系统模块接口设计

ONVIF服务框架以Web服务为基础。ONVIF规范中,设备发现和控制部分所定义的接口均以Web Services的形式提供。ONVIF规范包含了所 有 的 XML及 WSDL(Web Service Description Language)的定义,应用于网络视频服务。每一个支持ONVIF规范的终端设备都要提供相应功能的Web Service。服务端与客户端的数据交互采用SOAP协议进行传输。SOAP是一个基于XML的消息传递协议,对Web服务请求和应答消息进行SOAP封装,形成SOAP请求和应答消息,然后在网络上进行传送。SOAP作为一种轻量级协议,可以实现分布式环境下结构化信息[4]的交换。SOAP消息独立于任何操作系统或协议,且可以使用各种不同的网络传输协议进行传送。ONVIF定义了一致的SOAP消息传输协议,用于描述Web服务。本文设计的监控平台模块的接口是在Web服务框架上根据具体要实现的服务进行开发实现。

3.1 模块接口的开发流程和开发工具gSOAP

ONVIF所有的管理和配置命令都是基于Web服务的。WSDL是一种XML格式文档,它把Web服务描述成一组能够操作面向文档或者面向过程信息的端点。WSDL文档由类型、消息、操作、端口类型、绑定、端口、服务及部分组成。ONVIF不同的接口服务内容用XML语言描述。在具体开发过程中,开发人员根据WSDL的内容制定对应的Web Service。而在定制相应功能的Web Service时,需要使用具体的实现语言来描述,一般用JAVA语言或者是C++语言。本文使用C++语言进行服务功能具体的开发。为了简化开发工程,使用gSOAP工具[5]进行开发。gSOAP隐藏了SOAP封包与解析的实现细节。编译器可以将XML格式文件中数据类型转换为实现语言代码结构实现,开发人员无需过多考虑XML文件的打包与解析工作,从而专注于应用程序逻辑[6]的开发。ONVIF web服务的开发流程如图3所示。

首先,获取ONVIF服务WSDL描述文档(官网http://www.onvif.org下载所需WSDL 文件)。本文设备发现和云台控制相对应的WSDL文件为disovery.wsdl和ptz.wsdl两个文件,利用gSOAP工具生成ONVIF框架代码。不同设备需要实现的服务不同,需对应选择指定部分功能的WSDL文件。gSOAP开源工具包提供两个程序完成工作:wsdl2h和soapcpp2。wsdl2h解析指定的WSDL文件,生成ONVIF服务接口和数据类型的头文件;soapcpp2进一步解析此头文件生成真正的代码框架,得到文件soapClient.cpp(带有客户端接口实现函数)、soap Stub.h(带有ONVIF命名空间的数据类型和服务接口描述的头文件)、soapH.h、soapC.cpp(接口和数据的序列化和反序化)、soapServer.cpp(服务器例程)。将以上生成的文件拷贝到项目目录下,同时将gSOAP工具包的运行时库文件stdsoap2.h和stdsoap2.cpp拷贝到当前项目目录下[7],以进行业务的逻辑开发。

图3 WEB Service开发流程

以设备发现为例。在Linux系统下,用于获取头文件和生成相应可编译代码的开发命令为:

wsdl2h -o onvif.h -s -t typemap.dat remotediscovery.wsdl

soapcpp2 onvif.h -I gsoap/import(文件生成路径)

命令参数-o说明指定生成的头文件名,-s说明不使用STL代码,-t指定typemap.dat文件,-l为引入路径,onvif.h为生成文件名。gSOAP生成执行文件的流程如图4所示。

3.2 设备发现接口设计

根据前面的分析,使用gSOAP工具编译获得soapClient和soapServer等相关的头文件和源文件;设备发现使用的是remotediscovery.wsdl;ONVIF的Discovery服务使用组播技术。客户端通过发送组播消息,搜索处在同一网段内所有支持ONVIF的设备。组播使用D类地址,按照ONVIF规范的要求,设备发现使用239.255.255.250:3702。ONVIF设备收到组播发送的soap消息后会进行响应。设备发现的流程如图5所示。

图4 gSOAP开发流程框架

图5 设备发现的实现流程

根据流程,设备发现的实现步骤(代码实现)为:

(1) 定 义结 构 体wsdd_ProbeType,_wsdd_ ProbeMatches,wsdd_ScopesType,SOAP_ENV__ Header变量,并根据具体情况,配置相关变量的参数;

(2)设置命名空间,初始化soap环境变量,soap=soap_new(),soap_set_namespaces(soap,namespaces),soap_default_wsdd_ProbeType(soap, &req);

(3)绑定组播地址和端口,客户端发送调用探测函数,多播发送Probe消息。调用函数形式 为:result=soap_send_wsdd_Probe(soap,"soap. udp://239.255.255.250:3702", NULL, &req);

(4)根据返回值result,可判断调用是否成功;

(5)判断成功后,调用接收服务端响应函数result=soap_recv_wsdd_ProbeMatches(soap,&resp),返回消息包含了设备IP和设备服务地址;

(6)根据需要,输出我们想要得到的查询结果。

在本文设计中,返回输出的响应参数有:xsd-unsignedInt,scopes item,QName:tdn,uuid,xsd:QName,wsa:ServiceNameType,anyType:endpoint,wsdd:UriListType,Xaddrs。

3.3 云台控制接口设计

根据ONVIF规范,云台控制服务对应的WSDL文档为ptz.wsdl。在实现远端PTZ控制前,需要配置PTZ的相关信息。PTZ配置是通过PTZ类来实现的。类内主要方法有:

(1)获取PTZ节点信息GetNodes(),主要参数有名称、统一资源标识符、绝对位置、相对位置、持续移动、光圈信息等;

(2)获取预置位列表信息GetPresets();

(3)设置预置位信息SetPreset();

(4)删除预置位信息RemovePreset();

(5)调用预位置GotoPreset();

(6)持续移动ContinuousMove();

(7)停止移动Stop();

(8)获取PTZ配置信息GetConfiguration();

(9)获取PTZ配置范围信息GetConfiguration Options();

(10)设置PTZ配置信息SetConfiguration()。

通过PTZ类内方法,选择性地获取相关操作配置。云台控制接口主要围绕上述层面进行开发,相对应的测试也主要围绕这三大方面进行。

云台控制的核心代码实现如下:

第一,创建ONVIF控制实例。

EncoderOnvifController=new EncoderOnvifControll er("admin","admin",options[0].c_str(),HK);

这里,使用的登录用户名称和密码为admin,option[0]为传入的控制参数,continuousMove需要设置PTZ的移动方向、运动速度、光圈的变倍等参数。根据传入option指令参数,确定移动方向、速度、光圈的放大和缩小以及光圈速度。

第二,根据得出的参数进行相对移动和停止动作。x、y、zoom分别为远端设备的相对位置,ControlPTZ(vector<string> &options)。获得控制参数后,调用持续移动和停止移动这两大操作,对应的代码分别是:

3.4 ONVIF Server服务端接口设计

ONVIF Server服务端的主要任务是提供接口供客户端调用,而客户端的主要任务是根据需求设计相应的调用函数。

本文设计的ONVIF服务端框架主要分两个部分:一部分是接收数据,解析数据的接口类Common类,以分析接收到的数据,获取将要执行操作方法的名称和参数;另一部分是服务器处理的Server类,根据接收到的请求,启用服务器处理线程。

Common类的函数实现形式为:

void AnalyseData(String Data, ref MethodInfo Method, ref XmlElement Req)

解析函数,获取Mothod的方法为:

Method=Assembly.Load("ONVIFControl"). GetType(className).GetMethod(methodname);

解析数据,获取请求方法Req的函数为:

nol=doucmentE.GetElementsByTagName("Data");

Req=nol[0].FirstChild as XmlElement;

第二部分为Sever服务端请求处理部分,Web服务是通过套接字(socket)的通信机制实现。在服务端,套接字和主机地址绑定,并对端口进行监听,以等待客户端的连接请求消息[8]。重点是启用服务器监听和处理线程,将处理结果以数据流的形式返回给客户端请求。

相关流程设计:第一,开启服务端线程,创建线程实例;第二,创建TcpListener进行监听,监听客户端的连接请求;第三,调用AcceptTcpClient(),获取与一个客户端的连接,它返回一个TcpClient类型实例赋给Socket类对象;第四,接收来自客户端的数据,交给服务器线程处理,处理完成后,服务器返回结果,关闭连接。

相关核心代码实现有:

4 模块测试和结果分析

4.1 测试环境

本文监控设备使用某安防厂商生产的高清网络摄像头;视频监控设备端和软件客户端连入同一局域网内;设备发现和云台控制功能模块的测试主要运行在Linux操作系统下的eclipse集成开发环境;针对单独接口完成测试;视频监控平台客户端运行在Windows操作系统下;客户端集成监控平台的所有模块;通过客户端查看视频流信息,实现对云台的直观控制。

4.2 测试设备发现功能模块

通过ONVIF测试工具,得知所使用的网络摄像头支持ONVIF设备,IPCamera端的服务已实现,ONVIF测试效果则如图6所示。

设备发现发送Probe请求在客户端实现,设备发现模块在eclipse开发工具中的测试效果如图7所示。

测试结果表明,设备发现模块接口符合ONVIF协议的要求,通过发送Probe组播消息,获得远端服务地址http://192.168.51.43/onvif/device_service和设备其他相关的soap消息。

4.3 测试云台控制功能模块

在Linux操作系统下,通过命令行的输入来控制云台PTZ的运动。客户端调用指令为ControlPTZ 192.168.51.43 MediaProfile000 A500002901010100。指令192.168.51.43为远端设备IP地址,MediaProfile000为媒体配置文件流,A500002901010100为符合国标PTZ指令的指令流。通过编解码视频流,可以查看返回的视频流信息,效果图如图8所示。

图6 ONVIF工具搜索结果

图7 设备发现返回信息

图8 解码视频流

综合上述测试结果可知,本文设计的客户端服务功能模块接口能够完成ONVIF协议的设备发现和PTZ控制功能,并能够通过编解码将视频流传回到客户端,实现音视频流查看。

5 结 语

本文研究基于ONVIF协议标准的视频监控平台的服务模块接口设计,主要实现了设备发现和云台控制这两大主要部分的系统设计。测试结果表明,该设计很好地完成了对接口的开发,实现了监控平台对应模块的功能,同时监控平台可以与不同设备厂商生产的网络视频产品实现互通。使用接入接口ONVIF标准,视频监控平台将不同厂商不同型号支持ONVIF标准的前端摄像机设备很方便地接入系统平台中,节省了开发成本和维护成本。

[1] 陆嘉恒.Hadoop实战[M].北京:机械工业出版社,2011.LU Jia-heng.Hadoop Actual Combat[M].Beijing:China Machine Press,2011.

[2] 金巍.开放式网络视频接口协议研究[D].南京:南京大学,2011:66-70. JIN Wei. Study on Open Network Video Interface Forum Protocol[D].Nanjing:Nanjing University,2011:66-70.

[3] 王永嘉.监控系统—客户端设计与实现[D].杭州:浙江大学,2009. WANG Yong-jia.Supervisory Control System-Design and Implementation of Client-side[D].Hangzhou:Zhejiang University,2009.

[4] Box D,Ehnebuske D,Kakivaya G.Simple Object Access Protocol(SOAP)1.1[S].W3C Note,2000(05):14-37.

[5] 殷停,王英,叶天强.gSOAP在基于TR069协议的网络视频监控系统中的应用[J].工业控制计算机,2010,23(01):81-82. YIN Ting,WANG Ying,YE Tian-qiang.gSOAP Based on TR069 Protocol Network Video Monitoring System[J]. Industrial Control Computer,2010,23(01):81-82.

[6] Engelen R V.gSOAP 2.8.1 User Guide[R].2011:13-17.

[7] Aloisio G,Cafaro M,Lezzi D,et al.Secure Web Services With Globus GSI and gSOAP[C].Euro-Par 2003 Parallel Processing,Springer Berlin Heidelberg,2003:421-426.

[8] Matthew N,Stone R.Beginning Linux Programming[M]. UK:Wrox,2010:513-517.

马术聪(1991—),男,硕士研究生,主要研究方向为光接入网;

甘朝钦(1963—),男,博士,教授,主要研究方向为光接入网;

华 健(1992—),男,硕士研究生,主要研究方向为光接入网;

夏玮栋(1991—),男,硕士研究生,主要研究方向为光接入网;

谢伟伦(1992—),男,硕士研究生,主要研究方向为光接入网。

Design and Implementation of Device Discovery and PTZ Control Module in
Video Surveillance System based on ONVIF Protocol

MA Shu-cong,GAN Chao-qin,HUA Jian,XIA Wei-dong,XIE Wei-lun
(Key Laboratory of Specialty Fiber Optics and Optical Access Networks,School of Communication and Information Engineering,Shanghai University,Shanghai 200072,China)

Compared with many network protocols, ONVIF standards win a high market share in the field of video surveillance with better compatibility, scalability and integrity. This article describes the contents of ONVIF protocol, and analyzes the communication process between ONVIF client and server. In the design process of the communication module, web service is used to achieve device discovery function. Based on this discovery, PTZ control of the remote device is realized. The test results demonstrate that all devices supporting ONVIF protocol in LAN can be detected as well as PTZ control can be implemented by the designed ONVIF client module interface.

ONVIF protocol;Web Service;Discovery;PTZ

10.3969/j.issn.1002-0802.2016.06.023

TN948.6

:A

:1002-0802(2016)-06-0774-08

2016-02-06;

:2016-05-10 Received date:2016-02-06;Revised date:2016-05-10

该研究获国家自然基金项目(No.61132004、61275073及61420106011),上海科学技术发展基金项目(No.13JC1402600,14511100100,15511105400及15530500600)和上海市重点学科建设项目(No.S30108)资助

Foundation Item:This work is supported by Programs of Natural Science Foundation of China (No.61132004, 61275073 and 61420106011), Shanghai Science and Technology Development Funds (No. 13JC1402600, 14511100100, 15511105400 and 15530500600) and Shanghai Leading Academic Discipline Project (No.S30108).

猜你喜欢
服务端云台消息
云上之家——万科·郡西云台
现代装饰(2022年6期)2022-12-17 01:10:30
龙门山·卧云台
现代装饰(2022年6期)2022-12-17 01:09:42
帮我买云台
一张图看5G消息
基于STM32的无线FPV云台设计
电子制作(2019年23期)2019-02-23 13:21:16
云存储中基于相似性的客户-服务端双端数据去重方法
新时期《移动Web服务端开发》课程教学改革的研究
消费导刊(2018年8期)2018-05-25 13:19:48
在Windows Server 2008上创建应用
消息
中国卫生(2014年12期)2014-11-12 13:12:26
消息
中国卫生(2014年8期)2014-11-12 13:00:50