1.介绍
ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛)
ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(包括摄录前端、录像设备等)完全互通。
ONVIF规范中设备管理和控制部分所定义的接口均以Web Services的形式提供。ONVIF规范涵盖了完全的XML及WSDL的定义。每一个支持ONVIF规范的终端设备均须提供与功能相应的Web Service。服务端与客户端的数据交互采用SOAP协议。ONVIF中的其他部分比如音视频流则通过RTP/RTSP进行 。
首页地址:https://www.onvif.org/
2.Gsoap安装:
下载gsoap_2.8.45.zip安装包,使用unzip gsoap_2.8.45.zip命令行解压,会解出gsoap-2.8目录:
解压完后,准备环境和安装Gsoap,如果Ubuntu之前没有安装以下工具包需要先安装:
# sudo apt-get install build-essential
# sudo apt-get install libgtk2.0-dev libglib2.0-dev
# sudo apt-get install checkinstall
# sudo apt-get install flex bison
# sudo apt-get install openssl
# sudo apt-get install libssl-dev
编译环境准备完后在gsoap解压更目录准备编译:
# ./configure --prefix=/usr/local/gSOAP
# make
# make install
config执行结果
编译成功
执行make install成功后可发现在/usr/local/gSOAP/bin/目录:
这两个文件就是wsdl自动生成客户端服务端源码的关键
3.WSDL自动生成源代码
可以分为在线配置和本地配置(本文仅会介绍在Ubuntu中自动生成源码的方法,在Windows或OS,以及生成java/js等其他目标源码的方法可以自己尝试):
本地配置:
可通过onvif官网地址右键另存文件如图:
把下载好的wsdl文件放在onvif目录:
可以自己编写一个这样的脚本wsdl2hOnvif.sh:
#!/bin/bash
/usr/local/gSOAP/bin/wsdl2h -c++ -s -t typemap.dat -o ./onvif.h onvif/devicemgmt.wsdl onvif/event.wsdl onvif/accesscontrol.wsdl onvif/accessrules.wsdl onvif/advancedsecurity.wsdl onvif/analytics.wsdl onvif/credential.wsdl onvif/deviceio.wsdl onvif/display.wsdl onvif/doorcontrol.wsdl onvif/imaging.wsdl onvif/media.wsdl onvif/media2.wsdl onvif/provisioning.wsdl onvif/ptz.wsdl onvif/receiver.wsdl onvif/recording.wsdl onvif/search.wsdl onv