精华内容
下载资源
问答
  • Onvif QT服务器和客户端 Onvif QT Server客户端是使用QT C++创建Onvif Server和Onvif Client的示例。 程序已在IDE Qt Creator 3.4.2上使用Qt 5.5.0(MSVC 2013, 32 bit)构建。 在程序中,已使用 c ++ api创建服务器端...
  • onvif客户端demo

    热门讨论 2014-05-26 11:34:35
    onvif 客户端demo,实现设备信息获取,告警订阅等功能,大华可直接测试使用 Windows操作系统下,VS 2010 C++
  • Onvif 客户端工具

    2014-05-15 20:25:43
    Onvif 客户端工具,支持ProfileS 的IP 摄像机,支持存储
  • Onvif客户端源码

    热门讨论 2013-10-01 11:12:42
    Onvif 客户端获取设备地址,ptz地址,Io地址
  • ONVIF客户端最新C++实现

    热门讨论 2015-10-20 17:31:25
    ONVIF客户端最新C++实现,实现发现设备、获取视频uri、云控等
  • ONVIF客户端工具,疯转为库,可以直接使用,实现了大部分功能
  • Windows下采用VS2017做ONVIF协议的客户端,自己下载gsoap编译C语言框架开发,项目采用的是沃沃安的HDMI编码器作为服务器,实现搜索设备,获取设备信息,获取设备能力,读取音视频流地址,以及图像抓拍地址。...
  • onvif客户端

    2019-02-03 22:46:00
    前言 做开发有8年时间了,ffmpeg和onvif与我... onvif是我在毕业第二年的时候,有从0开始写过一个onvif服务端NVT,没想到6年后,项目中的客户端又需要用到它!!!其实本来不想开发它的,但是因为客户端依赖的onvif...

    前言

    做开发有8年时间了,ffmpeg和onvif与我是特别有缘的了(说着玩的,我更认为是因为他们确实强大^_^)。 ffmpeg在毕业设计时就有用到,5年后做windows、linux播放库时又有用到,于是又重新研究!!! onvif是我在毕业第二年的时候,有从0开始写过一个onvif服务端NVT,没想到6年后,项目中的客户端又需要用到它!!!其实本来不想开发它的,但是因为客户端依赖的onvif部分是别人的库,我们需要onvif抓图功能,结果对方没时间做,也不愿意把代码开放给我们,我特郁闷,这个又没什么技术含量,没必要当个宝藏着吧! 于是花了一周时间开发了自己的onvif客户端(这里不是从0开发,而是基于现有的开源onvif客户端开发的)。

    onvif客户端开发过程

    开发这类东西一般有两条路可选择,要么从0开始编码(当然,也不全是从0开始,可以基于onvif的wsdl来生成一些调用类,这样至少不用自己实现底层通讯及协议封装了,更多的只是为上层接口具体功能做封装,填充结构成员,调用对应的方法等),要么基于现有的开源代码进行改进,完善(开源的代码一般也是通过从wsdl生成的代码为基础而做的封装)。我通常会先尝试后者,没有合适的开源代码可参考时,才会从0开始编码,没必要发明轮子。下面记录下我的开发过程。

    首先,用搜索引擎搜索onvif客户端,去github或者gitlab上搜索onvif客户端,从找到的结果中刷选出一些可能合适的,我最开始得出以下可能:

    我主要的过滤条件包括:

    1. 我们项目是C++的,我希望是onvif客户端库也是c/c++开发的
    2. 我希望该onvif库的最后维护时间尽可能新,因为onvif有很多版本,不同版本的wsdl生成的最终文件包含的功能有很大不同
    3. 能够在1天内编译通过该开源的代码,因为很多开源的项目不够完善,别人很难很快的将其用起来
    4. 代码写的尽量的标准、规范,换句话说,要写的好看

    经过以上几个过滤实施后,我选择了 ONVIF Device Manager,它是c++开发的,而且和最新的onvif几乎同步,也是一次就编译通过了,通过简单的代码阅读,觉得代码写的挺漂亮的^_^

    进一步了解代码后,发现ONVIF Device Manager所提供的开源部分只是包含了onvif客户端的开发框架,很多功能都没有完全实现,但是很容易的进行完善,这得益于它漂亮的代码编写!这里简单的描述下我二次开发的过程,目录结构图如下:
    ONVIF Device Manager结构图

    onvif客户端功能的核心部分都是在onvifgen目录里面实现的(当然,很多都没写完,但是很容易补充全),它对应了onvifcpplib工程,生成onvifclient.lib静态库
    example\client\onvifclientwin32里面包含了一个onvifclient.lib静态库对应的测试demo

    分析出以上两部分之后,就可以得出二次开发的方案了,我采用的修改example\client\onvifclientwin32,将它变成自己onvif客户端对外的导出层,将编译生成exe改成生成dll,然后根据需求完善onvifcpplib。

    举例说明1:onvif搜索实现

    搜索的实现是通过OnvifClientSearch类来完成的,该类已定义,但是功能需要自己补充,对应的头文件onvifclientsearch.hpp,它内部是通过wsddProxy代理来实现搜索的,该代理封装了soap,代理部分的大部分功能这个开源库已经实现了,也就是说学会怎么使用该类即可。

    举例说明2:onvif ptz实现

    ptz的实现是通过OnvifClientPTZ类来完成的,该类已定义,但是功能需要自己补充,对应的头文件onvifclientptz.hpp,它内部是通过PTZBindingProxy代理来实现ptz控制的,该代理封装了soap,代理部分的大部分功能这个开源库已经实现了,也就是说学会怎么使用该类即可。因此,好消息是onvif ptz协议部分基本已经实现,我们要做的就是根据PTZBindingProxy类实现一些ptz方法,然后补充到OnvifClientPTZ类中。

    举例说明3:onvif 抓图实现

    抓图的实现是通过OnvifClientMedia类来完成的,该类已定义,但是功能需要自己补充,对应的头文件onvifclientmedia.hpp,它内部是通过MediaBindingProxy代理来实现ptz控制的,该代理封装了soap,代理部分的大部分功能这个开源库已经实现了,也就是说学会怎么使用该类即可。我们主要需要通过onvif协议获取抓图uri,然后通过http去这个uri取抓图的数据即可。参考实现如下:

    inline int OnvifClientMedia::GetSnapshotUri(_trt__GetSnapshotUriResponse &SnapshotUriResponse,string profileToken)
    {
        string strUrl;
        string strUser;
        string strPass;
        if (m_Device.GetUserPasswd(strUser, strPass) == false 
            || m_Device.GetMediaUrl(strUrl) == false)
        {
            return SOAP_ERR;
        }
    
        mediaProxy.soap_endpoint =  strUrl.c_str();
        soap_wsse_add_Security(&mediaProxy);
        soap_wsse_add_UsernameTokenDigest(&mediaProxy, "Id", strUser.c_str() , strPass.c_str());
    
        _trt__GetSnapshotUri SnapshotUriReq;
        SnapshotUriReq.ProfileToken = profileToken;
        return mediaProxy.GetSnapshotUri(&SnapshotUriReq, &SnapshotUriResponse);
    }

    总结

    我的onvif客户端的实现没有从0开始,而是采用基于ONVIF Device Manager二次开发实现的,该开源的代码写的非常漂亮,且onvif的功能也实现的非常全,同时,要扩展自己的功能的操作也是那固定的几步,因此我认为用它作为自己onvif客户端实现是非常适合的。

    转载于:https://www.cnblogs.com/rongpmcu/p/10351204.html

    展开全文
  • onvif客户端(转载)

    2020-06-29 15:37:59
    onvif客户端 前言 做开发有8年时间了,ffmpeg和onvif与我是特别有缘的了(说着玩的,我更认为是因为他们确实强大^_^)。 ffmpeg在毕业设计时就有用到,5年后做windows、linux播放库时又有用到,于是又重新研究!!...

    本文为转载文章,文章出处为:https://www.cnblogs.com/rongpmcu/p/10351204.html

    如果有侵权请及时联系删除,如想转载请先去联系原作者

    onvif客户端

    前言

    做开发有8年时间了,ffmpeg和onvif与我是特别有缘的了(说着玩的,我更认为是因为他们确实强大^_^)。 ffmpeg在毕业设计时就有用到,5年后做windows、linux播放库时又有用到,于是又重新研究!!! onvif是我在毕业第二年的时候,有从0开始写过一个onvif服务端NVT,没想到6年后,项目中的客户端又需要用到它!!!其实本来不想开发它的,但是因为客户端依赖的onvif部分是别人的库,我们需要onvif抓图功能,结果对方没时间做,也不愿意把代码开放给我们,我特郁闷,这个又没什么技术含量,没必要当个宝藏着吧! 于是花了一周时间开发了自己的onvif客户端(这里不是从0开发,而是基于现有的开源onvif客户端开发的)。

    onvif客户端开发过程

    开发这类东西一般有两条路可选择,要么从0开始编码(当然,也不全是从0开始,可以基于onvif的wsdl来生成一些调用类,这样至少不用自己实现底层通讯及协议封装了,更多的只是为上层接口具体功能做封装,填充结构成员,调用对应的方法等),要么基于现有的开源代码进行改进,完善(开源的代码一般也是通过从wsdl生成的代码为基础而做的封装)。我通常会先尝试后者,没有合适的开源代码可参考时,才会从0开始编码,没必要发明轮子。下面记录下我的开发过程。

    首先,用搜索引擎搜索onvif客户端,去github或者gitlab上搜索onvif客户端,从找到的结果中刷选出一些可能合适的,我最开始得出以下可能:

    我主要的过滤条件包括:

    1. 我们项目是C++的,我希望是onvif客户端库也是c/c++开发的
    2. 我希望该onvif库的最后维护时间尽可能新,因为onvif有很多版本,不同版本的wsdl生成的最终文件包含的功能有很大不同
    3. 能够在1天内编译通过该开源的代码,因为很多开源的项目不够完善,别人很难很快的将其用起来
    4. 代码写的尽量的标准、规范,换句话说,要写的好看

    经过以上几个过滤实施后,我选择了 rapidonvif,它是c++开发的,而且和最新的onvif几乎同步,也是一次就编译通过了,通过简单的代码阅读,觉得代码写的挺漂亮的^_^

    进一步了解代码后,发现rapidonvif所提供的开源部分只是包含了onvif客户端的开发框架,很多功能都没有完全实现,但是很容易的进行完善,这得益于它漂亮的代码编写!这里简单的描述下我二次开发的过程,目录结构图如下:
    rapidonvif结构图

    onvif客户端功能的核心部分都是在onvifgen目录里面实现的(当然,很多都没写完,但是很容易补充全),它对应了onvifcpplib工程,生成onvifclient.lib静态库
    example\client\onvifclientwin32里面包含了一个onvifclient.lib静态库对应的测试demo

    分析出以上两部分之后,就可以得出二次开发的方案了,我采用的修改example\client\onvifclientwin32,将它变成自己onvif客户端对外的导出层,将编译生成exe改成生成dll,然后根据需求完善onvifcpplib。

    举例说明1:onvif搜索实现

    搜索的实现是通过OnvifClientSearch类来完成的,该类已定义,但是功能需要自己补充,对应的头文件onvifclientsearch.hpp,它内部是通过wsddProxy代理来实现搜索的,该代理封装了soap,代理部分的大部分功能这个开源库已经实现了,也就是说学会怎么使用该类即可。

    举例说明2:onvif ptz实现

    ptz的实现是通过OnvifClientPTZ类来完成的,该类已定义,但是功能需要自己补充,对应的头文件onvifclientptz.hpp,它内部是通过PTZBindingProxy代理来实现ptz控制的,该代理封装了soap,代理部分的大部分功能这个开源库已经实现了,也就是说学会怎么使用该类即可。因此,好消息是onvif ptz协议部分基本已经实现,我们要做的就是根据PTZBindingProxy类实现一些ptz方法,然后补充到OnvifClientPTZ类中。

    举例说明3:onvif 抓图实现

    抓图的实现是通过OnvifClientMedia类来完成的,该类已定义,但是功能需要自己补充,对应的头文件onvifclientmedia.hpp,它内部是通过MediaBindingProxy代理来实现ptz控制的,该代理封装了soap,代理部分的大部分功能这个开源库已经实现了,也就是说学会怎么使用该类即可。我们主要需要通过onvif协议获取抓图uri,然后通过http去这个uri取抓图的数据即可。参考实现如下:

    inline int OnvifClientMedia::GetSnapshotUri(_trt__GetSnapshotUriResponse &SnapshotUriResponse,string profileToken)
    {
    	string strUrl;
    	string strUser;
    	string strPass;
    	if (m_Device.GetUserPasswd(strUser, strPass) == false 
    		|| m_Device.GetMediaUrl(strUrl) == false)
    	{
    		return SOAP_ERR;
    	}
    
    	mediaProxy.soap_endpoint =  strUrl.c_str();
    	soap_wsse_add_Security(&mediaProxy);
    	soap_wsse_add_UsernameTokenDigest(&mediaProxy, "Id", strUser.c_str() , strPass.c_str());
    
    	_trt__GetSnapshotUri SnapshotUriReq;
    	SnapshotUriReq.ProfileToken = profileToken;
    	return mediaProxy.GetSnapshotUri(&SnapshotUriReq, &SnapshotUriResponse);
    }
    

    总结

    我的onvif客户端的实现没有从0开始,而是采用基于rapidonvif二次开发实现的,该开源的代码写的非常漂亮,且onvif的功能也实现的非常全,同时,要扩展自己的功能的操作也是那固定的几步,因此我认为用它作为自己onvif客户端实现是非常适合的。


        毕业那两年在做嵌入式应用开发,主要是单片机和arm linux上的应用开发,后来又做了两年arm linux驱动开发,15年到现在在做pc端及嵌入式端开发,包括服务器系统裁剪、底层框架实现、硬件加速等。喜欢技术分享、交流!联系方式: 907882971@qq.com、rongpmcu@gmail.com

     

     

    本文为转载文章,文章出处为:https://www.cnblogs.com/rongpmcu/p/10351204.html

    如果有侵权请及时联系删除,如想转载请先去联系原作者

    展开全文
  • onvif客户端 使用zeep的Python中的ONVIF客户端 你好! 我将此文件推送到github,以便人们可以使用zeep向摄像机发送ONVIF命令的示例。 我必须下载和编辑wsdl文件-必须在底部添加wsdl:service部分。 由于我使用的是...
  • Python的ONVIF客户端实现 依存关系 Python 2.x(有关与Python 3兼容的fork,请参阅 ) > = 0.4 安装python-onvif 从来源 您应该克隆此存储库并运行setup.py: cd python-onvif && python setup.py install 从...
  • Onvif客户端

    热门讨论 2013-03-20 11:35:48
    搜索摄像机遵循ws-discovery协议,ws-discovery提供了两种操作模式:ad hoc和managed模式。
  • onvif客户端开发

    2016-07-29 15:59:13
    开发的一个onvif协议摄像机的部分经验,说的比较大概。
  • 1、在先前的Onvif开发环境搭建过程中生成了四个文件,如下: soapC.c soapClient.c soapH.h soapStub.h wsdd.nsmap 2、但是客户端开发这些文件还是不够了,还需要从gsoap文件夹中拷贝如下文件 dom.c dom.h...

    代码整理

    1、在先前的Onvif开发环境搭建过程中生成了四个文件,如下:

    soapC.c
    soapClient.c
    soapH.h
    soapStub.h
    wsdd.nsmap
    

    2、但是客户端开发这些文件还是不够了,还需要从gsoap文件夹中拷贝如下文件

    dom.c
    dom.h
    duration.c
    duration.cpp
    duration.h
    mecevp.c
    mecevp.h
    smdevp.c
    smdevp.h
    stdsoap2.c
    stdsoap2.h
    threads.c
    threads.h
    wsa5.h
    wsaapi.c
    wsaapi.h
    wsseapi.c
    wsseapi.h
    

    3、除此之外,如果在onvif.h的头文件中有加鉴权的信息还需要追加openssl的鉴权模块(可下载使用)才能正常使用。

    4、将以上的文件添加到自己搭建的工程中,除此之外还需要在工程文件中需要添加两个宏定义

    WITH_OPENSSL
    WITH_DOM
    

    至此整个Onvif客户端的开发环境已经搭建完毕,既可开始对应功能的开发

    展开全文
  • python-onvif, 在 python 中,ONVIF客户端实现 python-onvifpython 中的ONVIF客户端实现依赖项python 2.x ( 用于兼容的fork 3,请参阅 https://github.com/FalkTannhaeuser/python-onvif-zeep
  • Qt-Onvif客户端

    热门讨论 2020-03-12 11:36:35
    今天onvif客户端算是基本完工,记录一下。 功能特性: (1)此版本可以搜索设备, (2)修改指定设备的ip地址 (3)重启设备 (4)创建OSD,删除OSD,修改OSD(叠加OSD) (5)固件升级(文件传输),此处为私有协议...

    今天onvif客户端算是基本完工,记录一下。
    功能特性:
    (1)此版本可以搜索设备,
    (2)修改指定设备的ip地址
    (3)重启设备
    (4)创建OSD,删除OSD,修改OSD(叠加OSD)
    (5)固件升级(文件传输),此处为私有协议,后续有需要,也可根据这个私有协议增添其他功能(比如:修改RTSP端口,web端口,设备类型,设备名称等,可用服务器目录中的代码进行调试,然后再合入主分支代码)
    (6)帧率,码率,分辨率设置

    在这里插入图片描述

    展开全文
  • 1、下载 gSOAP 2、解压gsoap_2.8.114.zip, 找到目录gsoap\bin\win32,设置为Path,或者复制文件夹下的exe到...4 、生成onvif头文件 5、生成onvif代码 6、generated文件夹中所有源码添加到vs工工程 7、解决openss...
  • Go语言利用开源库实现onvif客户端实例 文章目录Go语言利用开源库实现onvif客户端实例1、开源库介绍2、示例代码及运行结果 目前我们在做一个智慧灯杆的项目,灯杆上有灯、显示屏、一些传感器、IPC、紧急报警等装置,...
  • Go语言实现Onvif客户端:3、获取网络接口token 文章目录Go语言实现Onvif客户端:3、获取网络接口token1、思路2、代码 上两节已经通过1、搜索设备、2、获取设备能力、3、鉴权、4、设备信息匹配几步找到了我们的设备...
  • 搭建 ONVIF IPC客户端开发框架 基本环境搭建 下载gSoap源码 gSoap源码编译 利用wsdl2h工具生成onvif.h文件 使用soapcpp2工具生成onvif代码框架 总结 参考资料
  • cxf生成onvif客户端

    2018-06-25 14:55:25
    使用cxf生成onvif协议的客户端。使用onvif协议提供的wsdl文件生成客户端
  • 使用gsoap编译出来的完整的onvif客户端代码,已在项目中使用,可放心下载。
  • Go语言实现Onvif客户端:1、设备搜索 文章目录Go语言实现Onvif客户端:1、设备搜索1、前言2、设备搜索思路3、搜索设备Go源码4、问题 1、前言 之前我们已经简单介绍过use-go的开源方案,其也是通过其它的开源方案...
  • Onvif客户端编译流程

    2018-03-10 08:04:22
    本文详细介绍目前摄像机与网络录像机等后端设备的通信协议ONVIF之详细编译流程与方法
  • onvif 协议的客户端工具,包括设备发现、设备鉴权、设备参数获取与设置、设备用户信息获取与设置、固件升级,视频流参数获取与设置以及设备rtsp流的获取与显示等,通过Live555解析显示rtsp流视频,C#版本的源代码,...
  • 基于wcf实现的onvif客户端,通过wsdl生产代码,在通过wcf直接调用,程序通过vs2017编译通过,。
  • 设备搜索:要访问一个IPC摄像头,或者说要调用IPC摄像头提供的WEB服务接口,就要先知道其IP地址,这就是设备发现的过程,...ONVIF规范并没有自己定义服务设备发现框架,而是复用了已经很成熟的WS-Discovery标准,...
  • ONVIF客户端搜索设备获取rtsp地址开发笔记(精华篇)-附件资源
  • ONVIF协议规定,部分接口需要鉴权,部分接口不需要鉴权,在调用需要鉴权的接口时不使用鉴权,会导致接口调用失败。实现鉴权的方式之一可以调用gSOAP源码中的soap_wsse_add_UsernameTokenDigest()函数。要安...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,667
精华内容 666
关键字:

onvif客户端