一、onvif简介
  2008年5月,由安讯士(AXIS)联合博世(BOSCH)及索尼(SONY)公司三方宣布 携手共同成立一个国际开放型网络视频产品标准网络接口开发论坛,取名为ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛),并以公开、开放的原则共同制定开放性行业标准。ONVIF标准将为网络视频设备之间的信息交换定义通用协议,包括装置搜寻、实时视频、音频、元数据和控制信息等。截止到2011年3月,已有279个公司加入ONVIF成为会员

而要用ONVIF协议和设备通信,绕不过soap协议。ONVIF规范中设备管理和控制部 分所定义的接口均以Web Services的形式提供。ONVIF规范涵盖了完全的 XML及WSDL的定义。每一个支持ONVIF规范的终端设备均须提供与功能相应的Web Service。除音视频传输外,服务端与客户端的数据交互采用SOAP协议,而音视频流则通过RTP/RTSP进行 。
  SOAP是一个基于xml的简易协议,可使应用程序在 HTTP 之上进行信息交换。

二、onvif一般开发流程
  GSOAP是一个用来生成SOAP协议接口的C/C++代码框架的工具,它可以将用户定义的本地化的C或C++数据类型转变为符合XML语法的数据结构。其使用过程如下

1)所需材料
  GSOAP下载路径 : http://sourceforge.net/projects/gsoap2/files/gSOAP(我使用的版本是 GSOAP-2.8)
  wsdl文件下载路径: https://www.onvif.org/profiles/specifications/ ,(根据自己需要开发 的模块下载对应的wsdl文件,后面流程我都以media2模块的开发为例,也就是需要下 载media2.wsdl文件)
  下载必须的xsd文件:common.xsd,onvif.xsd(否则生成onvif.h时会报错)
  将下载好的media2.wsdl、common.xsd、onvif.xsd都放在gsoap-2.8\gsoap\bin\win32目录 下

2)使用wsdl2h生成onvif.h
  生成头文件命令:wsdl2h -o -c onvif.h -t typemap.dat media2.wsdl
  wsdl2h后面可以加编译参数,如 -S -c -C -x等。可以用 --help了解。其中比较重要的 如下:
  -c:生成.c文件(默认是.cpp文件);
  -s:不生成STL标准库代码
  -C:只生成客户端文件

  • -S:只生成服务器端文件(注意大小写)

使用soapcpp2 以及上一步生成的onvif.h生成源文件
  (soapC.c、soapH.h、soapClient.c、 soapClientLib、soapStub.h、soapServer.c、 soapServerLib.c。)
  如要包含鉴权功能,在onvif.h里面添加 #import “wsse.h”
  生成源文件命令:soapcpp2 -c -I…/…/import onvif.h

4)除了上面两步生成的文件,再根据实际需要拷贝一些GSOAP工具中带的一些文件 (根目录下)到自己的工程中,这些也可以后面开发的时候根据报错,然后自己慢慢添 加,增加印象,如下
复制soapClient.c soapServer.c soapServerLib.c soapC.c soapH.h soapStub.h
  Media2Binding.nsmap
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\ stdsoap2.c
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\ stdsoap2.h
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\ dom.c
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\custom\duration.h
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\custom\duration.c
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\plugin\ threads.c
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\plugin\ threads.h
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\plugin\ wsaapi.c
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\plugin\ wsaapi.h
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\plugin\ wsddpi.c
复制D:\gsoap_2.8.27\gsoap-2.8\gsoap\plugin\ wsddpi.h

5) 添加服务端main函数,接收命令(其实需要自己写的也就只有main函数,还有后 面每个功能对应的具体的业务处理函数,以及建立一个架构将之前的GSOAP工具生成 的接口联系起来,而业务处理函数,则跟产品的SDK相关)

int main(int argc, char **argv)
  {
int m, s;
struct soap add_soap;
soap_init(&add_soap);
soap_set_namespaces(&add_soap, namespaces);
if (argc < 2) {
printf(“usage: %s <server_port> \n”, argv[0]);
exit(1);
} else {
m = soap_bind(&add_soap, NULL, atoi(argv[1]), 100);
if (m < 0) {
soap_print_fault(&add_soap, stderr);
exit(-1);
}
fprintf(stderr, “Socket connection successful: master socket = %d\n”, m);
for (;

onvif 添加H265开发流程相关推荐

  1. 移动端开发者眼中的前端开发流程变迁与前后端分离

    写在最开始 这是一篇面向移动端开发者的科普性文章,从前端开发的最初流程开始,结合示范代码,讨论开发流程的演变过程,希望能覆盖一部分前端开发技术栈,从而对前端开发的相关概念形成初步的认识. 本文会提供一 ...

  2. node.js的开发流程_Node.js子流程:您需要了解的一切

    node.js的开发流程 by Samer Buna 通过Samer Buna Node.js子流程:您需要了解的一切 (Node.js Child Processes: Everything you ...

  3. web开发流程 - 网上商城示例

    一.需求确定 1:通过各种手段确定系统的功能与性能    1)功能:注册.浏览.搜索...    2)性能:可同时支持n个并发访问,并且响应时间不低于m毫秒...    3)手段:头脑风暴(brain ...

  4. 如何让Git适应敏捷开发流程?

    一旦涉及版本控制系统,Git实际上代表敏捷开发的水平.Git作为一款强大的开源系统,有较强的灵活性,可以按需匹配任何开发团队的工作流程.而这种分布式相比较集中式来说,自然赋予系统更好的性能特征,且允许 ...

  5. 一个项目的开发流程是怎样的? 原名:「只差程序员」离优秀的产品还有多远?...

    http://www.toutiao.com/a4919665444/ ......产品开发的流程问题,这也是个严肃的问题.解决流程问题,就知道技术团队需要什么人,产品开发就成功了一半. 一个项目的开 ...

  6. 对 VR 项目开发流程的调研

    0. 参考资料 学习参考自以下资料: 一个 VR 游戏 DEMO 的开发历程是怎样的 http://tech.163.com/16/0726/08/BSSSPPT600097U7U.html 虚拟现实 ...

  7. python软件开发的一般流程-Python各个岗位的开发流程

    根据张大美女提供资料微修改,在这谢谢张大美女! 1.python软件开发工程师 1.1 项目启动会 说明项目目标.阶段划分.组织结构.管理流程等关键事项. 1.2 需求调研 由用户提出,描述产品的功能 ...

  8. arduino向串口发送数据时掉包_[技术]清楚简单,一种串口触摸屏的开发流程和方法介绍...

    1.什么是串口触摸屏 触摸屏是工业控制上很常见的人机交互部件,很多设备.系统都在使用它,它至少有两个功能:显示,触摸控制. 串口触摸屏是采用串行数据通信协议进行数据交换的触摸屏,具有简单.可靠.易于操 ...

  9. 我们一般的前端开发流程

    有些毕业生或非it行业的人,想了解真正的一个开发流程,就我个人的经验做以简单的分享,仅供参考,不是一个覆盖全行业的事实标准. 老板或甲方是一个需求的真正发起者,也是一个基础idea的梦想师,产品是需求 ...

  10. Zynq的AMP开发流程说明(基于OCM)

    目录 一.平台说明 二.软件安装 三.基本开发流程 3.1.AMP模式介绍 3.2.开发流程框图 四.具体开发流程 4.1.下载官方Demo源码 4.2.Vivado工程创建(Windows 64位环 ...

最新文章

  1. 【转】Hibernate的Generator属性有7种class,本文简略描述了这7种class的意义和用法。...
  2. [蓝桥杯][算法训练VIP]方格取数(双线程dp)
  3. 项目集成Spring Security
  4. Servlet 工程 web.xml 中的 servlet 和 servlet-mapping 标签
  5. adb查看activity的堆栈信息
  6. java 象棋 人工智能_【揭秘】人工智能大热,缘何不敢挑战中国象棋?
  7. 记录解决Mac系统升级后三指取词、词典失效问题的过程
  8. 贪心算法适用条件_贪心算法
  9. science图表_Science和Nature大部分图表都出自这款绘图软件,了解一下?
  10. 有道云笔记分享_有道云笔记的使用分享
  11. 小球放入盒中的方法总结(排列组合)
  12. 利用python爬取贝壳网租房信息
  13. Android 系统截屏实现
  14. 【沐风老师】3DMAX摆满我的书架(FillMyBookshelves)插件使用教程
  15. 【python】幼儿园分班
  16. Python的格式化输出(炒鸡详细)
  17. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )、淘宝店铺卖出订单详情接口,店铺订单明文接口,店铺订单解密接口,店铺订单消息推送接口
  18. “读心术”或将代替传统密码:EEG识别脑电波,以此来鉴别身份
  19. HTTP常见状态码 以及解决方法
  20. 学习笔记 | 面对海量数据,为什么无法设计出完美的分布式缓存体系?

热门文章

  1. 【Java】用java程序求李白的酒
  2. 高中必备学习软件_学霸必备app有哪些高中生必备app排行
  3. chnsenticorp数据集及其处理
  4. odoo 重写unlink方法
  5. 2021-07-24 centos基础设置
  6. linux c解决多个第三方so动态库包含不同版本openssl造成的符号冲突
  7. android第三方浏览器存在泄露用户隐私漏洞
  8. java实现心型代码
  9. matplotlib如何绘制网格线
  10. 利用MSXSL.exe绕过AppLocker应用程序控制策略