onvif协议框架搭建

来源:互联网 发布:数据分析工具有哪些 编辑:程序博客网 时间:2024/04/30 20:11

前言:

离职了,在准备上学还有一大段时间,前些日子由于工作需要,公司要求用海康的网络摄像头做出客户端程序,采集视频,并在LCD上显示出视频,故研究onvif协议,,现将心得写出。

开发环境:

本次搭建onvif框架采用的是周立功官网发布的Ubuntu 64位版本。版本为12.04.参考教程为许振坪的专栏。

名词的个人理解:

Onvif是一种全球通用的、开放的、标准的接口,使用这个接口来获取网络摄像头的各种参数或音视频流,服务端与客户端的数据交互采用SOAP协议,音视频流则采用RTP/RTSP进行,其接口是web services形式。

Gsoap工具将wsdl文档生成c或c++代码,从而生成webservice客户端。

Web services服务可以提供各种远程调用的接口函数。

网络摄像头:IPC

这样,如图1所示,我们就将采用gsoap工具来生成onvif的框架代码,自己只专注于客户端的应用开发,然后其中调用的函数通过gsoap工具生成的框架代码转变成web services形式,再发送给IPC。反过来,IPC发给客户端的数据是web service形式,通过框架直接转变为各种接口函数。这样大大较少中间过程的开发。

 

安装过程

在生成之前,需要安装下载前置软件(2017年8月21):注意安装顺序,gsoap需要在其他之后安装。

bison-3.0.4.tar.gz

flex-2.6.4.tar.gz

openssl-1.1.0f.tar.gz

gsoap_2.8.51.zip


使用命令解压并安装他们:

Bison:

tar -xvf bison-3.0.4.tar.gz

cd bison-3.0.4/

./configure

make

sudo make install

 

flex:

tar -xvf flex-2.6.4.tar.gz

cd flex-2.6.4/

./configure

make

sudo make install

 

openssl:

tar -xvf openssl-1.1.0f.tar.gz

cd openssl-1.1.0f/

./config --prefix=/opt/openssl--openssldir=/usr/local/ssl

make

make install

 

gsoap:

unzip gsoap_2.8.51.zip

cd gsoap-2.8

./configure --with-openssl=/opt/openssl

make

make install

安装gsoap工具成功后会有提示,如图2:

看看能否运行

wsdl2h -h

wsdl2h: error while loading sharedlibraries: libssl.so.1.0.0: cannot open shared object file: No such file ordirectory

提示找不到ssl的动态库,将动态库路径加上去

echo /opt/openssl/lib>>/etc/ld.so.conf

ldconfig


运行后,提示如图3:

 

说明没问题了。

因为基本每个网络摄像头都需要输入用户名和密码,即认证。故需要调用soap_wsse_add_UsernameTokenDigest函数,所以,在onvif.h头文件中加入#import“wsse.h”

这里我直接给出许振坪的命令来生成框架:

mkdir -p samples/onvif

wsdl2h -P -x-c -s -t ./typemap.dat -o samples/onvif/onvif.hhttps://www.onvif.org/ver10/network/wsdl/remotediscovery.wsdlhttps://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdlhttps://www.onvif.org/ver10/media/wsdl/media.wsdl

soapcpp2 -2 -C mkdir -p samples/onvif -L -c-x -I import:custom -d samples/onvif/ samples/onvif/onvif.h

成功后提示如图4:

复制其他需要的源代码:

cp stdsoap2.c stdsoap2.h plugin/wsaapi.cplugin/wsaapi.h custom/duration.c custom/duration.h  samples/onvif/

 

总结:

至此,框架已经搭建完成,剩下的就是应用程序的编写了,由于我当初只做到这一步,连c++都不会,应用程序完全是照搬许振坪的,故到此为止。

这是一篇记录onvif框架搭建的文章,并不适用与所有人。详细教程请移步许振坪的专栏。

所用到的源代码:

 http://download.csdn.net/download/qq904305159/9945347

 

 

出现问题及解决办法:

出现no acceptable m4 could be found in $PATH

wget -O m4-1.4.9.tar.gzhttp://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz

tar -zvxf m4-1.4.9.tar.gz

cd m4-1.4.9

./configure

make

make install

 

 

出现时钟错误:

1.  安装ntpdate工具

# sudo apt-get install ntpdate

2.  设置系统时间与网络时间同步

# ntpdate cn.pool.ntp.org

3.  将系统时间写入硬件时间

# hwclock –systohc

 

 

出现错误:

如图5:

修改import\wsa5.h文件,将int SOAP_ENV__Fault修改为int SOAP_ENV__Fault_alex,但是之前工作的时候虽然注意到了,但是并没有这个问题???版本问题??

原创粉丝点击