onvif-开发

1. 说明

onvif开发的资料比较多,可以根据需要来选择。本文侧重从头开始且偏实际操作,实现从生成代码,到实现发现设备,其他功能后续实现。

如果想直接调试,可以从GITHUB上获取一些代码直接使用。

如果从头开始可以参考这篇文章:
ONVIF客户端搜索设备获取rtsp地址开发笔记(精华篇)

如果要系统学习,可以参考(这是一个系列):
ONVIF协议网络摄像机(IPC)客户端程序开发

ONVIF:Open Network Video Interface Forum 开放型网络视频接口论坛 相当于大家都按照这个标准来实现指定的接口
WSDL: Web Services Description Language 网络服务描述语言 用于描述 Web Services 以及如何对它们进行访问

也就是说摄像头实现了onvif协议,我们可以通过网络调用onvif的接口函数从而实现一些功能。比如发现摄像头设备,从而获取摄像头音视频流地址等等服务,

设备发现是使用约定的组播地址:239.255.255.250:3702,在实际应用中,可能要注意组播路由的设置。尤其是linux系统。

2. 生成代码

生成代码使用soap工具

1.1 下载soap工具

gsoap_2.8.92

1.2 修改代码

gsoap/import/ wsa5.h
将277行int SOAP_ENV__Fault修改为int SOAP_ENV__Fault_alex

1.3 编译

./configure 
make 
make install
可能出现问题 stdsoap2.h:695: fatal error: openssl/bio.h:

解决:
sudo apt-get install openssl
为了安装OpenSSL通常的库文件,首先使用以下命令来确定在Ubuntu系统中可获得的库文件的应用版本:
sudo apt-cache search libssl | grep SSL
sudo apt-get install libssl-dev

1.4 产生 C 代码框架,包含客户端和服务器代码

wsdl2h -o onvif.h -c -s -t ./typemap.dat http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl http://www.onvif.org/onvif/ver10/display.wsdl http://www.onvif.org/onvif/ver10/deviceio.wsdl http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl http://www.onvif.org/onvif/ver10/receiver.wsdl  http://www.onvif.org/onvif/ver10/recording.wsdl http://www.onvif.org/onvif/ver10/search.wsdl http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl http://www.onvif.org/onvif/ver10/replay.wsdl http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl http://www.onvif.org/ver10/actionengine.wsdl http://www.onvif.org/ver10/pacs/accesscontrol.wsdl http://www.onvif.org/ver10/pacs/doorcontrol.wsdl

在onvif.h中添加 import "wsse.h" 添加对openssl的支持,实现鉴权

soapcpp2 -c onvif.h -x -I../gsoap-2.8/gsoap/import -I../gsoap-2.8/gsoap/ -I../gsoap-2.8/gsoap/custom -I../gsoap-2.8/gsoap/extras

以上代码完成代码生成,可以基于生成的代码进行下一步开发

3 设备发现

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.介绍 ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛...
    Young_Allen阅读 13,502评论 3 11
  • 一、gSoap简介 1.1、soap协议 介绍gsoap需要先了解soap协议,soap名叫简单对象访问协议,是交...
    爪爪熊阅读 754评论 0 2
  • ONVIF简介 ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如W...
    ORCLee阅读 8,800评论 0 1
  • 写了一个自定义键盘,使用代理实现的回调,遇到了一个奇葩问题 键盘都是枚举来定义的,每次回调都会返回一个枚举值,其他...
    fortitude1990阅读 380评论 0 0
  • 晚风轻拂面,花香满鼻间。 恰逢人间四月天,傍晚的天气像个格外温柔的少女,树树花开是她特意喷上的属于她的独有的香水气...
    姜归宁阅读 940评论 0 1