• Linux下onvi支持h265环境的的搭建:gsoap的安装及生产.c .h文件


     1. 下载gsoap http://www.genivia.com/products.html#notice,既Open Source gSOAP版本,并解压进入目录安装,configure后面的选项可以根据自己的需求添加,--prefix后面填写的gsoa安装所在的路径,我安装的是当前的路径,如果prefix出现安装错误,则需要把路径改成绝对路径。

    •  ./configure --enable-ipv6 --enable-debug --prefix=./
    • make
    • make install 

     2. gsoap虽然安装完成,但是你还要检查你的linux下是否也安装了以下内容,没有的话要安装一下,gsoap才能正常使用:

    3. 把gsoap-2.8/gsoap/typemap.dat也拷贝到一个新建工作目录下,并修改该文件的内容,在命名空间已经存在的trt下,新增支持h265的代码行 tr2     = http://www.onvif.org/ver20/media/wsdl ,tr2 可以自己随便命名,以后关于h265接口的都会以tr2名字出现。

    4.生成onvif.h:

        在线生成:

    • (http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/events/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/ver10/media/wsdl/media.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/onvif/ver10/schema/onvif.xsd http://www.onvif.org/ver10/actionengine.wsdl http://www.onvif.org/ver10/pacs/accesscontrol.wsdl http://www.onvif.org/ver10/pacs/doorcontrol.wsdl http://www.onvif.org/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl http://www.onvif.org/ver10/accessrules/wsdl/accessrules.wsdl http://www.onvif.org/ver10/credential/wsdl/credential.wsdl http://www.onvif.org/ver10/schedule/wsdl/schedule.wsdl)
    • 可以根据项目功能结合所需要的wsdl网址来生成onvif.h,可以减小编译时间和减少整体框架大小: http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl:用于发现设备http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl :用于获取设备参数http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl :用于获取视频流地址  https://www.onvif.org/ver20/media/wsdl/media.wsdl:用于获取h265视频流地址 http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl:用于设备的PTZ控制 

    • wsdl2h -o onvif.h -c -s -t typemap.dat http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl  http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl https://www.onvif.org/ver20/media/wsdl/media.wsdl  http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl

       离线生成:

    • 离线生成的好处是可以生成gsoap框架后,根据所需要的功能去裁剪 *.wsdl及onvif.xsd 来减小整体框架的大小。首先结合项目功能下载相关的wsdl文件:https://www.onvif.org/profiles/specifications/,右击  *.wsdl,链接另存为即可保存成本地文件,也可以去上面在线生成wsdl网址右击查看源代码,另存为即可保存成wsdl文件。同时也要下载相关的 *.xsd文件。
    • wsdl2h -o onvif.h -c -s -t typemap.dat -I gsoap-2.8/gsoap -I gsoap-2.8/gsoap/import/ remotediscovery.wsdl devicemgmt.wsdl media.wsdl media2.wsdl ptz.wsdl 
    • (media2.wsdl 是支持h265获取视频流地址:https://www.onvif.org/ver20/media/wsdl/media.wsdl)

    5. 加入鉴权功能

    • 在onvif.h的第100行加上 #import "wsse.h"

    6. gsoap-2.8gsoapimport路径下的wsa5.h中的SOAP_ENV__Fault结构体注释掉或改为其他名字,如SOAP_ENV__Fault_alex

    7.生成 *.c文件、*.h和命名空间*.nsmap:

    • 将gsoap-2.8/gsoap/import/目录拷贝到当前工作目录
    • soapcpp2 -c -x -I gsoap-2.8/gsoap -I ./import onvif.h
    • -C :仅生成客户端代码

      -S:仅生成服务器端代码

      -L:不要产生soapClientLib.c和soapServerLib.c文件

      - c: 产生纯C代码,否则是C++代码

      -I:指定import路径

      -x:不要产生XML示例文件

    8. 将gsoap-2.8gsoap目录下的两个文件:stdsoap2.c、stdsoap2.h拷贝到你工作目录下

    9. 注释stdsoap2.c如下代码:不注释的话会在编译运行的时候产生log日志,最后会发现磁盘已满的现象。

    /*

    #ifdef SOAP_DEBUG

    #ifdef TANDEM_NONSTOP

    soap_set_test_logfile(soap, "TESTLOG");

    soap_set_sent_logfile(soap, "SENTLOG");

    soap_set_recv_logfile(soap, "RECVLOG");

    #else

    soap_set_test_logfile(soap, "TEST.log");

    soap_set_sent_logfile(soap, "SENT.log");

    soap_set_recv_logfile(soap, "RECV.log");

    #endif

    #endif

    */

    和修改

    if (/*s == r || *r || */n < -128 || n > 127)

    10. 接下来可以用生成好的框架来完成搜索设备、获取h265的rtsp地址及其其他相应的功能。

  • 相关阅读:
    Java基础——java中String、StringBuffer、StringBuilder的区别
    Java基础——深入剖析Java中的装箱和拆箱
    Java内存分配全面浅析
    基于Appium的移动端UI自动化测试
    测试比对工具,辅助型QA转型之路
    读懂了腾讯和阿里的区别,就读懂了中国商业的秘密!
    Python中的基础数据类型(List,Tuple,Dict)及其常用用法简析
    阿里妈妈技术质量再度重磅开源:国内首个智能化功能测试开源平台Markov
    卧槽,极客时间今天专栏课程突然免费,啥情况?
    Flask 与 Django 先学哪个呢
  • 原文地址:https://www.cnblogs.com/croxd/p/10684693.html
Copyright © 2020-2023  润新知