onvif 开发文档【2】

二: onvif 开发环境的搭建

下边这张图来自于网上,对我们熟悉onvif开发描述的十分清晰,我就是顺着这个思路走下去的。

从上边的介绍中,我们基本知道onvif是个什么协议,其中十分关键一点是这种协议的展现形式是webservice。让我们通过下图对webservice的调用过程有一个初步的了解。

对基于webservice格式存在接口,我们第一步要首先寻找webserive对应的wsdl文件在那里?当然去onvif的官方网站去找了。要搭建开发平台的第一步就是从onvif的官方网站获取wsdl.

1:访问如下地址获取相关的wsdl.

http://www.onvif.org/Documents/Specifications.aspx

在这个页面中会看到如下图所示的内容,

ONVIF WSDL andXML Schemas Specifications

Use the schemafiles below to automatically generate client and server side stubs. Open thelinks in your browser to view the related service documentation. The indexlists all operations specified for ONVIF services.

Deprecated since version 1.02:【这部分是过时的东西,就不要在用了】

2:如何下载这些wsdl?

目前总共有24个下载项目我们可以看到,我当时一看,头都大了,这么多,还不累死人去,别着急,其实和我们相关的东西还真不多,我们仅仅需要关注我用彩色标注出来这四个部分即可,当然你如果有兴趣,也可以把其它部分都下载下来。下载的方式当然是点右键,打开这个链接,然后页面另存为即可。页面另存为的时候就不要修改文件名称了,它是什么就什么,这四个文件名称分别为:

Devicemgmt.wsdl:设备管理的webservice

Meida.wsdl: 媒体能力的webservice

Remotediscovery.wsdl:搜索设备的webservice

Onvif.xsd: 公共数据结构的定义,无论使用那个webservice,这个都要下载

3: 下载gsoap帮助我们把这些wsdl生成c代码

我下载的是最新的gsoap版本,版本号:2.8.17,访问以下连接,得到最新的gsoap工具。

http://sourceforge.jp/projects/sfnet_gsoap2/releases/

目前最新版本是gsoap_2.8.17,下载下来之后扩张名是zip,直接在windows下解压即可,然后上传到linux服务器。gsoap在linux下需要编译一下才能得到我们想要哪两个工具soapcpp2和wsdl2h。windows下使用gsoap相对简单,下载后之后使用不需要编译,在下载包中已经包含了这两个可执行程序。

注意/home/wx是公司分配给我的工作目录。以下的描述我对直接用决定路径描述,所以你在编译的过程中,要有所参考,不是全盘照抄。

另外编译过程中需要安装一些开发库,根据编译的错误随时调整需要安装的开发库。我在编译的过程中,根据出现的错误提示信息,安装相应的linux开发包。编译gsoap的过程十分简单,总共两条命令:

./configure

./make

编译完以后进入/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/bin/linux386目录,可以看到soapcpp2  wsdl2h这两个可执行程序,wsdl2h用于根据wsdl生成头文件,soapcpp2用于根据生成的头文件再生成c的源文件。

1:    把前边下载的3个wsdl文件和一个xsd文件上传到和soappcpp2 wsdl2h相同的目录。

2: 把/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap目录下的import目录,custom目录,以及该目下的typemap.dat三部分拷贝到/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/bin/linux386.然后执行下边的操作,用于生成头文件onvif.h

./wsdl2h 
-c  -s -t  ./typemap.dat  -o onvif.h remotediscovery.wsdl media.wsdl devicemgmt.wsdl

或者

./wsdl2h 
-c  -s -t  ./typemap.dat  -o onvif.h

http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdlhttp://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdlhttp://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl

第二种方式其实直接使用网上的wsdl,不用自己下载,如果网络速度足够快,我建议用第二种方式。第一种方式执行生成onvif.h头文件需要修改原始下载下来的三个wsdl文件,第二种方式利用网络上的wsdl不需要修改wsdl文件,可靠并且方便。

3:紧接着要生成c的原文件,在生成c的源文件之前,修改两个地方,因为webservice提供的函数调用都需要鉴权操作,所以这部分功能需要打开。修改上一步生成的onvif.h文件,我当时就是没有修改这个文件,导致最后生成代码中SOAP_ENV__Header结构体中缺少定义
wsse__Security数据段,无法进行鉴权命令。所以切记不要忘记了,必须修改如下,在onvif.h中增加#import "wsse.h"。

另外把/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/bin/linux386/import目录下的wsa5.h的头文件中把最后一个结构注释上。字样如下:

//gsoapSOAP_ENV service method-action: Fault
http://www.w3.org/2005/08/addressing/soap/fault

intSOAP_ENV__Fault

(       _QName         faultcode,                 // SOAP 1.1

char                    *faultstring,              // SOAP 1.1

char                    *faultactor,               // SOAP 1.1

struct SOAP_ENV__Detail       *detail,              //SOAP 1.1

struct SOAP_ENV__Code         *SOAP_ENV__Code,        // SOAP 1.2

struct SOAP_ENV__Reason     *SOAP_ENV__Reason,    // SOAP 1.2

char                    *SOAP_ENV__Node,        // SOAP 1.2

char                    *SOAP_ENV__Role,          // SOAP 1.2

struct SOAP_ENV__Detail       *SOAP_ENV__Detail,       // SOAP 1.2

void

);

然后执行下边的操作。

./soapcpp2 -2  -c -C -L -x  onvif.h -Iimport

如果成功执行以上命令,该工具会生成如下几个文件:

-rwxr--r-- 1 wxSmbGrp 8464004 Mar 31 16:34 soapC.c

-rwxr--r-- 1 wxSmbGrp  389296 Mar 31 16:34 soapClient.c

-rwxr--r-- 1 wxSmbGrp    1917 Mar 31 16:34 wsdd.nsmap

-rwxr--r-- 1 wx SmbGrp 3624959 Mar 31 16:34 soapH.h

-rwxr--r-- 1 wxSmbGrp  556743 Mar 31 16:34 soapStub.h

4:整理自己工程所需要的头文件h文件和c源文件,需要的原文件列表如下:


文件名称


来源


soapC.c


gsoap生成 /home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/bin/linux386


soapClient.c


gsoap生成 /home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/bin/linux386


wsdd.nsmap


gsoap生成 /home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/bin/linux386


soapH.h


gsoap生成 /home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/bin/linux386


soapStub.h


gsoap生成 /home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/bin/linux386


dom.cpp


直接拷贝 /home/wx/gsoap_2.8.17/gsoap-2.8/gsoap


Stdsoap2.cpp


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap


Stdsoap2.h


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap


Duration.c


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Duration.h


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Mecevp.c


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Mecevp.h


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Smdevp.c


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Smdevp.h


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Thread.c


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Thread.h


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Wsaapi.h


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Wsaapi.c


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Threads.c


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Threads.h


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Wsseapi.c


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin


Wsseapi.h


直接拷贝/home/wx/gsoap_2.8.17/gsoap-2.8/gsoap/plugin

在Windows下边记着把.c文件修改扩展名为.cpp,文件名称不要修改,仅仅修改文件的扩展名。

5:建立我自己的第一个onvif应用。

上边这个压缩包可以直接解压,上传到linux服务器进行测试上边所做的工作是否成功。这个软件包可以测试出网络中的摄像头,然后得出其中第一个搜索到的摄像头所具有的能力。

onvif 开发文档【2】,布布扣,bubuko.com

时间: 2024-11-02 23:33:16

onvif 开发文档【2】的相关文章

onvif 开发文档【1】

一: onvif 介绍: Onvif是一套协议,或者简单说是一个标准,接触一个新的协议或者标准,第一步我想首先是要弄清这个协议是做什么?我也是带着这个疑问,开始了对onvif的研究和探索.下边的资料是我从百度上搜索到的,和我自己的学习步骤也是一样,先搜索点东西读一读,对onvif有一个表层的认识. 1:为什么会有onvif? ONVIF致力于通过全球性的开放接口标准来推进网络视频在安防市场的应用,这一接口标准将确保不同厂商生产的网络视频产品具有互通性.2008年11月,论坛正式发布了ONVIF第

手机客户端接口开发文档模板整理

这是个人整理的手机开发文档模板,方便自己以后编写文档. 大体内容如下,详细在个人csdn中下载: 移动端转发短信上传温湿度信息 移动端负责后台接收温湿度传感器通过短信发来的温湿度和经纬度信息,移动端后台接收后上传web服务器,当然传感器也可通过wifi直接上传web服务器.返回小写true或者false. 请求URL: http://192.168.1.101:8080/RFID/addTransTemperature.action?phoneNumber=123&temperature=12.

微信开发文档

1. 选择功能设置 填写JS安全域名 下载 .....txt.传到服务器上 2.下一步进入基本配置 AppID(应用ID)  wxc8d0f11aba2b1ec0 AppSecret(应用密钥) 0937eb071d48a6b944ccc3e67ad0b25e 3.修改服务器配置 配置令牌 token 开始开发---接入指南 页面最下方 代码示例 下载 wx_sample.php 去开发者中心 进入开发者文档 进入微信网页开发 进入微信JS-SDK开发文档 页面的最下方 示例代码 下载完成后 打

软件开发文档

软件开发文档 软件开发文档是软件开发使用和维护过程中的必备资料.它能提高软件开发的效率,保证软件的质量,而且在软件的使用过程中有指导,帮助,解惑的作用,尤其在维护工作中,文档是不可或缺的资料. 软件文档可以分为开发文档和产品文档两大类. 开发文档包括:<功能要求>.<投标方案>.<需求分析>.<技术分析>.<系统分析>.<数据库文档>.<功能函数文档>.<界面文档>.<编译手册>.< QA 文

iOS开发-开发文档安装

iOS开发肯定离不开开发文档,苹果有在线帮助文档,xCode其实可以下载模拟器文档和iOS8.1文档的,不过下载的速度实在不敢恭维,而且比较头疼的是不显示下载进度条的,苹果的开发文档都是放在)/应用程序/Xcode.app/Contents/Developer/Documentation/DocSets路径下,该路径下可以看到三个文件,xCode 6.1文档(com.apple.ADC_Reference_Library.DeveloperTools.6_0_1.docset),iOS8.1文档

ECMall模板开发文档

ECMall 模板开发文档 前 言 欢迎阅读 ECMall 模板制作教程,通过阅读本教程可快速上手 ECMall 模板的使用和制作. ECMall 模板制 作要求用户具备 XML . XHTML 和 CSS 基础知识:至少掌握一种文本编辑器或网页制作工具 ( 如: EditPlus,Dreamweaver,Textmate 等 ) : 本教程还将及一些模板代码, 如从没有了解过 Smarty 建议阅读 Smarty 帮助手册. 第一节 -ECMall 模板机制介绍 通过阅读本节你将了解: 1.

Android官方开发文档Training系列课程中文版:目录

原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻译成英文,供国内的开发者使用,尤其是入门开发者,虽然现在网络上有很多入门课程,但是还是依靠官方文档学习来的靠谱,安卓官方文档是一系列的课程,使每个人可以系统的掌握安卓的知识,相比其它课程来说,它为开发者提供了查缺补漏的功能. 在这里你可以领略到安卓开发世界的精彩. Tips : 同时,本目录可以作为

Android 界面滑动实现---Scroller类 从源码和开发文档中学习(让你的布局动起来)

在android学习中,动作交互是软件中重要的一部分,其中的Scroller就是提供了拖动效果的类,在网上,比如说一些Launcher实现滑屏都可以通过这个类去实现.. 在广泛使用的侧边滑动导航开源库 --SlidingLayer其实就是使用到了Scroller类进行的实现,下载地址:GITHUB  ,下面要讲的不是这个库,而是这个库的实现过程中使用到的---Scroller类,懂了之后你看库的源码就知道,原来它是这样实现的. Scroller类使用过程中,懂得以下机制可能会对开发更有帮助: 1

支付宝小程序正式上线公测 附开发者工具和开发文档

支付宝小程序正式进入公测阶段,开发者可以申请公测了.支付宝小程序是一种全新的开放模式,它运行在支付宝客户端,可以被便捷地获取和传播,为终端用户提供更优的用户体验.小程序开放给开发者更多的JSAPI和OpenAPI能力,通过小程序可以为用户提供多样化便捷服务.公测申请地址:https://openhome.alipay.com/platform/miniBeta.htm 支付宝小程序特色能力 1.支付能力.满足商户各商业经营场景的支付需求2.信用能力.为商户高效识别用户的真实.靠谱性3.大数据能力