Onvif协议开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
序
ONVIF协议致力于通过全球性的开放接口标准来推进网络视频在安防市场的应用,这一接口标准将确保不同厂商生产的网络视频产品具有互通性。2008年11月,论坛正式发布了ONVIF协议第一版规范——ONVIF协议核心规范Onvif协议1.0版,后续又推出Onvif 协议2.0版本。随着视频监控的网络化应用,产业链的分工将越来越细。有些厂商专门做网络摄像机,有些厂商专门做DVS,有些厂商则可能专门做平台等,然后通过集成商进行集成,提供给最终客户。这种产业合作模式,已经迫切的需要行业提供越来越标准化的接口平台。本文用于指导NVR及软件平台解决方案中的Onvif协议对接,详细介绍了Onvif协议、WSDL、SOAP等基本概念,讲述开发的流程及各种文件的来源,为开发及维护人员提供理论支持。
目录
序 (1)
目录 (2)
第1章基本概念 (3)
Onvif协议协议规范 (3)
Web Service (3)
WSDL (4)
SOAP (4)
gSOAP工具 (4)
第2章组网框架 (6)
第3章开发流程 (7)
3.1 获取WSDL文件 (7)
3.2 通过gSOAP工具生成C/C++文件 (8)
3.2.1 gSOAP工具说明 (8)
3.2.2 使用wsdl2h程序生成头文件 (9)
3.2.3 使用soapcpp2.exe生成源文件 (10)
3.3 开发业务逻辑代码 (11)
3.4 编译发布 (12)
第4章测试工具 (13)
第5章相关资料 (15)
第1章基本概念
Onvif协议协议规范
Onvif协议规范描述了网络视频的模型、接口、数据类型以及数据交互的模式,并复用了一些现有的标准,如WS系列标准等。
规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(包括摄录前端、录像设备等)完全互通。
规范中设备管理和控制部分所定义的接口均以Web Services的形式提供。Onvif协议规范涵盖了完全的XML及WSDL的定义。每一个支持Onvif协议规范的终端设备均须提供与功能相应的Web Service。
服务端与客户端的数据交互采用SOAP协议,Onvif协议中的其他部分比如音视频流则通过RTP/RTSP进行。
Web Service
Web Service是基于网络的、分布式的模块化组件,执行特定的任务。Web Service 主要利用HTTP 和SOAP 协议使数据在Web 上传输。Web 用户能够使用SOAP 和HTTP通过Web 调用的方法来调用远程对象。
Web Service能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据Web Service规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。
图1-1Web Service组网
WSDL
WSDL是Web Service Description Language(Web Services描述语言)的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言,为用户提供详细的接口说明。
SOAP
SOAP是Simple Object Access Protocol(简单对象访问协议)的缩写,是基于XML的一种协议,被设计成在WEB 上交换结构化的和固化的信息。
目前的应用程序通过使用远程过程调用(RPC)在诸如DCOM 与CORBA 等对象之间进行通信,但是HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。
通过HTTP 在应用程序间通信是更好的方法,因为HTTP 得到了所有的因特网浏览器及服务器的支持。SOAP 就是被创造出来完成这个任务的。
SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。
一条SOAP 消息就是一个普通的XML 文档,包含下列元素:
●必需的Envelope 元素:可把此XML 文档标识为一条SOAP 消息
●可选的Header 元素:包含头部信息
●必需的Body 元素:包含所有的调用和响应信息
●可选的Fault 元素:提供有关在处理此消息所发生错误的信息
在向Web Service发送的SOAP请求中,Body元素中的字段需与WSDL中数据类型的相符合。在构建SOAP的过程中,必须从WSDL文件中获取并映射这一种对应关系。然而这样一个对应过程将是充满了重复性和机械性的,为了避免不必要的人工差错以及节约开发时间,一个名为gSOAP的编译工具应运而生。
gSOAP工具
gSOAP利用编译器技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来,通过将WSDL文件解析序列化为C/C++文件,最小化了Web Service的开发过程。
几个概念的关系:
Onvif协议开发的目的是为了实现一个网络视频框架协议,使不同厂商所生产的网络视频产品完全互通,而不同厂商可能会使用不同的平台、语言、内部协议来实现自己的网络视频产品,如何实现彼此间的互通及避免重复开发呢?
Web Service就是一种忽略平台、语言的技术。它使用SOAP 和HTTP通过Web 调用的方法来调用远程对象。这样,只要实现了Web Service,并且将功能集暴露出来,对端就可以通过远程调用对象的方式达成互通的目的,就像调用本地函数一样。
即使是调用本地函数,仍然需要知道函数名是什么,参数有哪些,参数类型是怎么样的。WSDL就描述了这些内容。相同的WSDL就能够保证了数据描述的一致性。
光是数据描述一致还不能实现远程调用,需要SOAP来提供通道。
没有gSOAP工具也可以实现Onvif协议开发的目标,但是需要写代码来解析WSDL文件,需要考虑的问题很多,重复性和机械性工作也很多。与其将时间跟精力花在解析WSDL 文件上面,不如使用gSOAP工具来生成框架代码,将时间跟精力聚焦在业务上的实现。