Onvif协议客户端开发【1.概念篇】
来源:互联网 发布:美康医药软件 编辑:程序博客网 时间:2024/06/06 03:47
这段时间在做毕设,做的东西是基于Onvif的视频流云存储。把碰到的一些问题记录下来。
一.学习Onvif协议
简单来说,可以把Onvif协议想像成Http协议,客户端发出请求,然后服务端在收到请求之后把所需信息返回给客户端。以浏览器为例子,html代码通过http协议来传送。其实Onvif的整个过程很类似的,当你想去学习onvif协议的时候,所有介绍onvif的文章里面都会提到,onvif是基于soap协议和wsdl协议的,而soap协议和wsdl协议都是基于xml的。我们先不管soap协议和wsdl协议是什么东西,但是对于xml我们应该比较熟悉的。我们知道xml里面其实传送的是数据或请求命令,那么这里就可以把xml想像成html了。这样一来就比较好理解了。举个例子:
对于网络摄像头,我们可以看成是服务端(Onvif里面把IP摄像头定义为NVT设备 :Network Video Transmitter),既然是服务端,就跑着很多“服务”,比如说设置IP的服务,控制摄像头移动、调焦的服务,提供网络视频流的服务,等等。而每一个服务都有一个Profile(配置文件)。我们想要使用这些服务,必须首先去请求获得这些Profile(配置文件),这些Profile里面有关于对应服务的具体信息。
客户端首先去请求获得某个服务的Profile,服务端收到请求后把该Peofile里面的信息返回给客户端。这样客户端根据收到的Profile里面的信息就可以使用服务了。(当然真正的过程远比这个复杂,但是大致就是这个流程)。
那么,服务端提供哪些服务呢?我们可以认为在wsdl协议里面规范了提供的服务。
那么,客户端和服务端是怎么进行交互的呢?我们可以认为soap协议规范了交互这个过程。
现在我们对整个流程的了解更进了一步,接下来我们再回过头来看看上面的第一张图。
我们编写的是客户端,所以我们就是caller。我们所要编写的代码是红色的那部分,也就是逻辑函数。
而具体的函数实现是在黄色的User-stub里面实现的。黄色的这部分不用我们来做,刚才已经说了,交互是通过soap来进行的,所以我们可以使用工具来自动生成User-stub,具体步骤如下:
1.使用Onvif协议的官方wsdl文档生成头文件,使用的工具是wsdl2h
2.根据头文件生成stub代码,使用的工具是soapcpp2
最后,绿色的部分是RPC runtime,由于我们编写的是红色的逻辑代码的函数,而RPC runtime是根据黄色的User-stub生成的,所以调试起来会比较麻烦。搜索一下别人的博客可以发现一些调试技巧,这里就不写出来了,大家可以自己找一下。
希望这篇文章对您理解Onvif的整个流程有所帮助。
- Onvif协议客户端开发【1.概念篇】
- ONVIF协议网络摄像机(IPC)客户端程序开发(5):门外汉理解ONVIF协议
- ONVIF协议网络摄像机(IPC)客户端程序开发(5):门外汉理解ONVIF协议
- Onvif开发之客户端搜索篇
- Onvif开发之客户端搜索篇
- ONVIF客户端开发
- ONVIF 协议开发
- ONVIF协议网络摄像机(IPC)客户端程序开发(6):使用gSOAP生成ONVIF框架代码
- ONVIF协议网络摄像机(IPC)客户端程序开发(6):使用gSOAP生成ONVIF框架代码
- ONVIF协议开发实战指导
- Onvif开发之客户端鉴权获取参数篇
- ONVIF协议网络摄像机(IPC)客户端程序开发(1):专栏开篇
- ONVIF协议网络摄像机(IPC)客户端程序开发(2):第一次使用IPC摄像头
- ONVIF协议网络摄像机(IPC)客户端程序开发(3):理解什么是Web Services
- ONVIF协议网络摄像机(IPC)客户端程序开发(7):设备搜索
- ONVIF协议网络摄像机(IPC)客户端程序开发(8):获取设备基本信息
- ONVIF协议网络摄像机(IPC)客户端程序开发(9):鉴权(认证)
- ONVIF协议网络摄像机(IPC)客户端程序开发(10):设备校时
- Unity 自己lu带有惯性(缓动)的代码
- [POJ]
- 剑指offer 32 统计数字出现次数
- android图形
- iOS webView “NSURLErrorDomain”错误 -999
- Onvif协议客户端开发【1.概念篇】
- YII踩坑纪录
- Ubuntu下LAMP环境的搭建以及远程连接MySQL数据库
- svn的常见错误
- Hibernate学习笔记(二)
- 数据结构之哈希表(散列表查找)
- QT FOR 安卓动态旋转屏幕
- Linux提权:从入门到放弃
- 网络七层协议