ubuntu下onvif协议的编译和使用

ubuntu下onvif协议的编译和使用

  • 本文主要分享一下整体的过程和我遇到的一些问题,详细过程见参考博客中的专栏。

目录

  • ubuntu下onvif协议的编译和使用
    • 目录
    • 参考文章
    • 流程
      • 编译gsoap库(需要支持openssl功能)
      • gsoap编译onvif协议
      • onvif协议中调用函数以实现功能
      • 已经实现的功能
      • 后续
    • 感受

参考文章

-https://blog.csdn.net/benkaoya/article/category/6924052

流程

编译gsoap库(需要支持openssl功能)

  • 了解编译前需要下载依赖的库
  • gsoap不要下最新版(最新版编译onvif时会出现错误,我现在用的是gsoap2.8.60)
  • 可以参考我的分享 https://blog.csdn.net/qq_25188995/article/details/81587083

gsoap编译onvif协议

  • 上面的支持openssl的gsoap编译完成后就可以用来编译onvif(在线编译)

onvif协议中调用函数以实现功能

  • 编译项目时注意链接openssl的库文件,增加编译选项(-DWITH_OPENSSL)(以上是两步,我之前以为是同一步卡了好久QAQ)
  • 为此专门去学习了以下cmake,写了一个CMakeiststxt(编译果然方便了很多),可以参考我的文章https://blog.csdn.net/qq_25188995/article/details/81811756
  • 这一步的代码主要参考了上面博主大神的代码
  • 博主的代码中显示结构体数据的文件是他自己写的(如dump…),不过他没有分享,我们只要去查一下数据结构,很容易写一个显示的代码
  • 这一过程肯定要理清onvif各个函数的关系,只要去 soapStub.h这一头文件去搜索好了
  • 编程过程中需要用到wireshark抓包进行分析
  • 测试时用到的文件
CMakeCache.txt  cmake_install.cmake    dom.c       duration.h    
  mecevp.c  MediaBinding.nsmap  RemoteDiscoveryBinding.nsmap  smdevp.h 
 wsseapi.h  CMakeFiles      CMakeLists.txt       DeviceBinding.nsmap 
 duration.c    Makefile        mecevp.h  onvif.h       smdevp.c           
 soapC.c   soapH.h       stdsoap2.c  testfiles   threads.h  wsaapi.h  wsseapi.c

已经实现的功能

  • 设备查找
  • 查询及修改设备系统时间
  • 获取设备的功能
  • 获取视频流的rstp流地址和截图(其实是个10s的短视频)的http地址
  • 测试了几个IPC,大华、海康,DUNLOP,其中有3个海康IPC,有一个完全搜索不到

后续

  • 有一些设备的信息获取不全,以及功能需要完善
  • 对于大华IPC的支持
  • 由于以后开发的软件是windows的,肯定要在windows环境进行编译和编码

感受

  • 由于是转行,基础知识不扎实,为了一些常识类的问题折腾了许多时间,不过总算折腾出了大概的思路。这一过程中了解了许多基础工具的用途和编译的流程,收获颇丰。非常感谢各博主的分享。编译过程中存在许多重复和冗余的过程。欢迎各位交流学习。

你可能感兴趣的:(onvif)