您好,欢迎访问三七文档
onvif规范中文介绍什么是ONVIF?ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(包括摄录前端、录像设备等)完全互通。ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(包括摄录前端、录像设备等)完全互通。ONVIF规范中设备管理和控制部分所定义的接口均以WebServices的形式提供。ONVIF规范涵盖了完全的XML及WSDL的定义。每一个支持ONVIF规范的终端设备均须提供与功能相应的WebService。服务端与客户端的数据交互采用SOAP协议。ONVIF中的其他部分比如音视频流则通过RTP/RTSP进行。协同性:不同厂商所提供的产品,均可以通过一个统一的“语言”来进行交流。方便了系统的集成。灵活性:终端用户和集成用户不需要被某些设备的固有解决方案所束缚。大大降低了开发成本。质量保证:不断扩展的规范将由市场来导向,遵循规范的同时也满足主流的用户需求。由于采用WSDL+XML模式,使ONVIF规范的后续扩展不会遇到太多的麻烦。XML极强的扩展性与SOAP协议开发的便捷性将吸引到更多的人来关注和使用ONVIF规范。ONVIF的组织日益壮大,与同领域的PSIA,HDCCTV相比,占据了绝对的人员优势。会员企业不乏国内外著名的设备制造商与集成商。一套规范、协议的生命周期,与市场占有率是息息相关的。而ONVIF规范的发展则正是由市场来导向,由用户来充实的。每一个成员企业都拥有加强、扩充ONVIF规范的权利。ONVIF规范所涵盖的领域将不断增大。目前门禁系统的相关内容也即将被纳入ONVIF规范之中。在安防、监控系统急速发展的今天,效率和质量的领先所带来的价值不言而喻。ONVIF协议提供了这样的潜质。ONVIF规范的实现机制1、webservice2、wsdl3、soapWebService是基于网络的、分布式的模块化组件,执行特定的任务。WebService主要利用HTTP和SOAP协议使数据在Web上传输。Web用户能够使用SOAP和HTTP通过Web调用的方法来调用远程对象。客户端根据WSDL描述文档,会生成一个SOAP请求消息,该请求会被嵌入在一个HTTPPOST请求中,发送到WebServices所在的Web服务器。WebServices请求处理器解析收到的SOAP请求,调用相应的WebServices。然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把信息送回到客户端。WSDL是Webservices描述语言(WebServiceDescriptionLanguage)的缩写。是一个用来描述Web服务和说明如何与Web服务通信的XML语言,为用户提供详细的接口说明书。SOAP是SimpleObjectAccessProtocol的缩写。是基于XML的一种协议。一条SOAP消息就是一个普通的XML文档,包含下列元素:必需的Envelope元素,可把此XML文档标识为一条SOAP消息可选的Header元素,包含头部信息必需的Body元素,包含所有的调用和响应信息可选的Fault元素,提供有关在处理此消息所发生错误的信息在向WebService发送的SOAP请求中,Body元素中的字段需与WSDL中数据类型的相符合。在构建SOAP的过程中,必须从WSDL文件中获取并映射这一种对应关系。然而这样一个对应过程将是充满了重复性和机械性的,为了避免不必要的人工差错以及节约开发时间,一个名为gSOAP的编译工具应运而生。gSOAP利用编译器技术提供了一组透明化的SOAPAPI,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来。通过将WSDL文件解析序列化为C/C++文件,最小化了WebService的开发过程。WebService开发流程WebService与视频监控ONVIF规范向视频监控引入了WebService的概念。设备的实际功能均被抽象为了WebService的服务,视频监控系统的控制单元以客户端的身份出现,通过Web请求的形式完成控制操作。WebService能给视频监控系统带来什么?设备的无关性,任何一个设备接入系统,不会对其他系统造成影响。设备的独立性,每一个设备只负责对接收到的请求做出反馈,甚至不需要知晓控制端的存在。管理的集中性,所有的控制由客户端来发起。ONVIF规范能给视频监控系统带来什么?抽象了功能的接口。统一了对设备的配置以及操作的方式。控制端关心的不是设备的型号,而是设备所提供的WebService规范了视频系统中WebService范围之外的行为。ONVIF提供了各个模块的WSDL,拥有效率非常高的开发方式。ONVIF规范的内容设备发现设备管理设备输入输出服务图像配置媒体配置实时流媒体接收端配置显示服务事件处理PTZ控制其他基于ONVIF规范的项目的开发预备知识ONVIF规范中设备管理和控制部分所定义的接口均以WebServices的形式提供。ONVIF规范涵盖了完全的XML及WSDL的定义。每一个支持ONVIF规范的终端设备均须提供与功能相应的WebService。服务端与客户端的数据交互采用SOAP协议。【来自】ONVIF中的其他部分比如音视频流则通过RTP/RTSP进行。那么WebServices、SOAP、WSDL、gSOAP又都是什么?假如我们需要开发一个linux上的app,这个app需要与远端的Web服务有一个交互,比如获取一个运算结果、或者是天气等,那么我们就需要使用WebServices。WebServices可以概述为:WebServices可以将应用程序转换为网络应用程序。通过使用WebServices,应用程序可以向全世界发布信息,或提供某项功能。WebServices可以被其他应用程序使用。通过WebServices,会计部门的Win服务器可以与IT供应商的UNIX服务器相连接。基本的WebServices平台是XML+HTTP。Webservices使用XML来编解码数据,并使用SOAP来传输数据。SOAP又是什么?SOAP是基于XML的简易协议,可使应用程序在HTTP之上进行信息交换。或者更简单地说:SOAP是用于访问网络服务的协议。对于应用程序开发来说,使程序之间进行因特网通信是很重要的。目前的应用程序通过使用远程过程调用(RPC)在诸如DCOM与CORBA等对象之间进行通信,但是HTTP不是为此设计的。RPC会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。通过HTTP在应用程序间通信是更好的方法,因为HTTP得到了所有的因特网浏览器及服务器的支持。SOAP就是被创造出来完成这个任务的。SOAP提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。如何实现SOAP?我们要知道SOAP协议是基于XML的,那么如何能够将他们嵌入到C/C++的应用程序里使用?gSOAP编译工具就提供了一个SOAP/XML关于C/C++语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。将与开发无关的SOAP协议的实现细节相关的内容对开发人员隐藏起来。因为SOAP提供的是一种标准化的方法,gSOAP的编译器能够自动的将用户定义的本地化的C或C++数据类型转变为符合XML语法的数据结构,这样,只用一组简单的API就将用户从SOAP细节实现工作中解脱了出来,可以专注与应用程序逻辑的实现工作了。并且可以跨越多个操作系统、语言环境以及在防火墙后的不同组织。更直白的说,使用gSOAP可以产生用于开发WebServices的SOAP通信协议方面的代码框架,开发人员只需要实现server的被调用的函数,然后在client端就可以像调用本地函数一样调用在远端的函数。gSOAP包含两个工具wsdl2h和soapcpp2,用来产生代码框架。开发Web服务程序,需使用gSOAP生成服务器端和客户端代码框架(通常情况下之需要实现server端或者实现client,因为另一端通常是别人做好的,比如ipnc中的onvif,实现的server端)。我们有两种做法:编写WSDL,使用wsdl2h生成头文件,再soapcpp2生成框架代码;编写头文件,使用soapcpp2生成框架代码;这两种方式,结果是一样的,最终都有产生头文件,并生成代码。不同在于,在项目的开发中需要维护的文件不同,前者是需要维护WSDL文件,后者维护头文件。SOAP调用示例下面就使用第二种方法来实现一个简单的通信实例:在远端实现两数相加,然后返回运算结果。1、下载gSOAP我使用的版本时2.8.8,软件包不需要安装,直接解压,在gsoap-2.8\gsoap\bin目录下是上面提到的两个命令行工具,包含win32、linux、maxOS等三种版本,在使用soapcpp2生产代码框架时一般需要gsoap-2.8\gsoap\import目录下和gsoap-2.8\gsoap\custom的文件。在命令行中使用-IPATH包含进来即可。2、编写头文件:add.h在这里我们不需要wsdl的文件,可以直接从.h文件来生成代码。我们定义一个函数声明文件,用来定义接口函数,名称为add.h[cpp]viewplaincopy1.//gsoapoptcw2.//gsoapns2schemanamespace:urn:add3.//gsoapns2schemaform:unqualified4.//gsoapns2servicename:add5.//gsoapns2servicetype:addPortType6.//gsoapns2serviceport:~engelen/addserver.cgi7.//gsoapns2servicenamespace:urn:add8.//gsoapns2servicetransport::addrpc10.//gsoapns2servicemethod-encoding:add:add12.intns2__add(intnum1,intnum2,int*sum);3、产生代码框架我们执行一下命令,自动生成一些远程调用需要的文件。(先将他们加如到系统环境变量中)soapcpp2-cadd.h-c是产生纯C代码,如果提示找不到typemap.dat,将gsoap-2.8\gsoap下的typemap.dat复制到当前目录就可以了。通过上列命令我们会得到如下文件:先大概记住他们的名字,将来会提到他们。4、添加服务端代码,创建文件:addserver.c[cpp]viewplaincopy1.#includesoapH.h2.#includeadd.nsmap3.4.intmain(intargc,char**argv)5.{6.intm,s;7.structsoapadd_soap;8.soap_init(&add_soap);9.soap_set_namespaces(&add_soap,namespaces);10.11.if(argc2){12.printf(usage:%sserver_
本文标题:onvif资料整理
链接地址:https://www.777doc.com/doc-5502775 .html