精华内容
下载资源
问答
  • onvif协议开发

    2014-09-10 23:37:54
    详细讲解了视频监控行业中的onvif协议
  • ONVIF2.0中文协议原版,对于摄像头的onvif协议开发人员是必备的书籍
  • java基于onvif协议开发IPC的转码服务器【一】 截至发文,公司项目初步完成,但是还有很多待优化的地方需要解决,网上大多使用C开发,使用java开发的略少一点 记录一下开发过程以及途中遇到的坑,一方面给自己一个...

    java基于onvif协议开发IPC的转码服务器【一】

    截至发文,公司项目初步完成,但是还有很多待优化的地方需要解决,网上大多使用C开发,使用java开发的略少一点
    记录一下开发过程以及途中遇到的坑,一方面给自己一个提醒,也算是一些小小的收获记录,另一方面也给同样碰到困难的朋友们提供一个解决思路

    首先要感谢这位仁兄的分享,帮助我度过了从0开始研究onvif的一段艰难的路程

    https://blog.csdn.net/benkaoya/article/details/72424335

    onvif协议的初步了解可以从上述博客了解就好啦

    这里要补充两点,以上的协议是在ipc开启了onvif协议的情况下做的,而现在市面上很多的ipc设备都是默认不开启onvif协议的,以海康为例,需要连接摄像头开启onvif协议,并且添加用户名密码到协议列表中才能正常使用

    展开全文
  • onvif 协议的客户端工具,包括设备发现、设备鉴权、设备参数获取与设置、设备用户信息获取与设置、固件升级,视频流参数获取与设置以及设备rtsp流的获取与显示等,通过Live555解析显示rtsp流视频,C#版本的源代码,...
  • 本demo,基于vs2017开发,采用C#开发语言,实现了onvif协议之抓图功能
  • 基于C#实现onvif协议之云台控制

    热门讨论 2018-05-08 17:48:26
    基于vs2017 开发,C#实现onvif协议之云台控制,直接可以编译通过。
  • 基于gsoap2.8.70,onvif协议的鉴权及云台操作,不包含设备发现
  • 这是我博客专栏文章《ONVIF协议网络摄像机(IPC)客户端程序开发》中附带的示例代码。 博客:http://blog.csdn.net/benkaoya 专栏:http://blog.csdn.net/benkaoya/article/details/72424335
  • ONVIF2.0中文协议+开源库onvif,学习中,欢迎下载。。
  • ONVIF由安讯士联合博世及索尼公司三方宣布将携手共同成立一个国际开放型网络视频产品标准网络接口开发论坛,取名为ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛),并以公开、开放的原则共同...

    Onvif是什么

    ONVIF由安讯士联合博世及索尼公司三方宣布将携手共同成立一个国际开放型网络视频产品标准网络接口开发论坛,取名为ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛),并以公开、开放的原则共同制定开放性行业标准。

    ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(包括摄录前端、录像设备等)完全互通。

    ONVIF规范中设备管理和控制部分所定义的接口均以Web Services的形式提供。ONVIF规范涵盖了完全的XML及WSDL的定义。每一个支持ONVIF规范的终端设备均须提供与功能相应的Web Service。服务端与客户端的数据交互采用SOAP协议。ONVIF中的其他部分比如音视频流则通过RTP/RTSP进行 。

    Onvif规范给视频监控带来的好处:
    1.抽象了功能的接口。统一了对设备配置的以及操作的方式。
    2.控制端关心的不是设备的型号,而是设备提供的web service。
    3.扩展了web service的范围
    4.ONVIF提供了各个模块的WSDL,提高了开发效率。

    Onvif提供很多的profile概要文件,用于规范ONVIF设备端与ONVIF客户端的通信标准。目前已发布的profile文件主要包括profile S、G、C、Q、A、T,不同的profile文件应用于不同的领域,不同profile文件可以组合使用。Profile文件的一致性是确保符合ONVIF产品的兼容性的唯一方法,因此,只有符合profile文件的注册产品才被认为是兼容ONVIF的。

    Profiles应用在哪里?

    Profile S应用于网络视频系统,Profile G应用于边缘存储与检索,Profile C应用于网络电子门禁系统,Profile Q应用于快速安装,Profile A应用于更广泛的访问控制配置,Profile T应用于高级视频流。

    各个Profiles的介绍

    Profile S
    Profile S就像是蜘蛛线身边忠实可靠的奈德,为网络视频系统的产品提供帮助:
    1、视频和音频流
    2、PTZ控制和继电器输出
    3、视频配置和多播
    Profile S应用于网络视频系统。Profile S的设备(例如:网络摄像机或视频编码器)可以将视频数据通过IP网络发送到Profile S的客户端。Profile S的客户端(例如:视频管理软件)可以配置、请求和控制从Profile S的设备上的IP网络视频流。

    Profile G
    Profile G看似平凡,却凭借着和寇森特工一样极强的行动能力,完美应用在网络视频系统的边缘存储与检索层面,特点包括:
    1、配置、请求、控制录像
    2、接收视频/音频流
    Profile G应用于网络视频系统。Profile G设备(例如:网络摄像机或视频编码器)可以通过网络存储或本地存储录像。Profile G客户端(例如:视频管理软件)可以配置、请求和控制Profile G设备上的录像。

    Profile C
    在网络电子门禁系统中的贾维斯(最了解钢铁侠的智能管家)——Profile C,具备强大的系统管理功能,应用于:
    1、站点信息和配置
    2、事件和警报管理
    3、门禁控制
    Profile C应用于电子门禁系统。Profile C设备和客户应支持站点信息、门禁控制、事件和报警管理。

    Profile Q
    快银——Profile Q凭借着出色的超速度,应用于快速安装领域:
    1、简单的设置
    2、发现、配置和控制设备
    3、先进的安全功能
    Profile Q应用于网络视频系统,其目的是提供Profile Q产品的快速发现和配置(例如:网络摄像机、网络交换机、网络监视器)。Profile Q的客户端能够发现、配置和控制Profile Q设备。Profile Q也提供有条件的特点,支持传输层安全协议(TLS),允许ONVIF设备与客户端以防止篡改和窃听的安全方式进行网络通信。

    Profile A
    在更广泛的访问控制配置中的Profile A,凭借着如同皮姆博士掌握的超高科技,具备以下功能:
    1、授予/撤销证书
    2、创建时间表
    3、指定访问规则
    Profile A应用于访问控制系统。Profile A的设备可以检索信息、状态和事件,并配置访问规则、凭据和时间表等。Profile A的客户端可以访问规则配置、凭据和时间表。Profile A客户端还可以检索和接收标准化的访问控制相关事件。

    Profile T
    Profile T-苏睿公主,有出色的视频管理能力,应用于高级视频流,特点包括:
    1、支持H.264/H.265视频压缩
    2、成像设置
    3、动作警报和篡改事件
    4、元数据流
    5、双向音频流
    Profile T应用于高级视频流,具有高级视频流的能力,并且扩展了元数据流和分析的特征集。Profile T能更高效地处理高清摄像头的视频流,同时,还涵盖了元数据流HTTP/TLS流式传输、WebSocket流式传输,包括分析和事件。

    Onvif实现的机制

    Web service
    WSDL
    SOAP
    

    Web service简介

    Web service主要是利用HTTP和SOAP使数据在Web上传输。Web 用户能够使用SOAP和HTTP通过Web调用的方法来调用远程对象。Web service的运行原理如下:
    在这里插入图片描述
    Web客户端根据WSDL描述文档,生成一个请求消息,该消息被嵌入到HTTP POST请求中,发送到web service所在的服务器,web service服务器解析受到的Soap请求,调用相应的web service,然后生成相应的应答,服务端得到soap应答后,通过http应答的方式把消息送回客户端。客户端和服务端的应答的过程如下:
    在这里插入图片描述
    基于web service的开发原理:
    在这里插入图片描述

    ONVIF与web service

    ONVIF规范向视频监控引入了Web service概念。设备的实际功能均被抽象成web service服务,视频监控系统的控制单元以客户端的身份出现,通过web请求的形式完成实际控制操作。两者的结构图如下:
    在这里插入图片描述

    ONVIF规范范围内的设备类型

    NVT(Network Video Transmitter):网络视频服务器(比如,网络摄像机,编码设备等),通过IP网络发送媒体数据到客户端。

    NVD(Network Video Display):网络视频接收器(比如,网络视频显示器),通过IP网络,从NVT等设备获取媒体数据。

    NVS(Network video Storage):通过IP网络,记录从媒体设备(比如NVT)获得的媒体数据或者元数据到永久存储介质中。也能够在客户端回放存储数据

    NVA(Network video Analytics):分析从媒体设备(比如NVT)中或存储设备(比如NVS)中获得的数据的设备。

    展开全文
  • C# ONVIF接入开发

    2020-11-24 19:21:00
    ONVIF(开放式网络视频接口论坛)是一个全球性的开放式行业论坛,其目标是促进开发和使用基于物理IP的安全产品接口的全球开放标准。ONVIF创建了一个视频监控和其他物理安全领域的IP产品如何进行相互通信的标准。
  • 最近有点忙,所以计划有所耽搁 在IPC设备开启onvif协议之后,我们需要调用webservice接口去获取设备信息和主次码流地址来进行转码推流操作 首先下载onvif协议wsdl文件去生成webservice代码框架 地址如下: ...

    最近有点忙,所以计划有所耽搁
    在IPC设备开启onvif协议之后,我们需要调用webservice接口去获取设备信息和主次码流地址来进行转码推流操作
    首先下载onvif协议wsdl文件去生成webservice代码框架
    地址如下:
    http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
    http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl
    http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl
    http://www.onvif.org/onvif/ver10/recording.wsdl
    http://www.onvif.org/onvif/ver10/display.wsdl
    http://www.onvif.org/onvi f/ver10/receiver.wsdl
    http://www.onvif.org/onvif/ver10/deviceio.wsdl
    http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl
    http://www.onvif.org/onvif/ver10/search.wsdl
    http://www.onvif.org/onvif/ver10/schema/onvif.xsd
    https://www.onvif.org/ver20/media/wsdl/media.wsdl
    这里我们只需要media.wsdl
    然后通过ip,账号/密码(指onvif协议用户列表的账号密码)调用接口获取主次码流地址:

    OnvifClient onvifClient = new OnvifClient(ip, agreementName, agreementPassword);
                MediaProxy mediaProxy = onvifClient.getMedia();
                List<Profile> profiles = mediaProxy.GetProfiles();
                mainMedia = mediaProxy.getRTSPStreamUri(profiles.get(0).getToken());
                secondlyMedia = mediaProxy.getRTSPStreamUri(profiles.get(1).getToken());
                System.out.println("主:"+mainMedia);
                System.out.println("次:"+secondlyMedia);
    

    然后通过部署的ffmpeg4来进行推流操作:

    FfmpegHandler ffmpegHandler = new FfmpegHandler();
                String ffmpegPath = "D://Enviroment/ffmpeg4/ffmpeg-20191101-53c21c2-win64-static/bin/ffmpeg.exe"; // Example of path on Window OS: D://ffmpeg.exe
                ffmpegHandler.setFfmpegPath(ffmpegPath);
    
                StringBuilder optionBuilder = new StringBuilder();
                secondlyMedia = secondlyMedia.substring(0,7)+ userName+":"+userPassword+"@"+secondlyMedia.substring(7,secondlyMedia.length());
                optionBuilder.append(FFMPEGOptionType.RTSP_TRANSPORT_TCP.getOption());
                optionBuilder.append(AppConst.SPACE);
                optionBuilder.append(FFMPEGOptionType.STREAM_LOOP.getOption());
                optionBuilder.append(AppConst.SPACE);
                optionBuilder.append(FFMPEGOptionType.I.getOption());
                optionBuilder.append(AppConst.SPACE);
                optionBuilder.append("\""+secondlyMedia+"\"");
                optionBuilder.append(AppConst.SPACE);
                optionBuilder.append(FFMPEGOptionType.VCODEC_COPY.getOption());
                optionBuilder.append(AppConst.SPACE);
                optionBuilder.append(FFMPEGOptionType.PRESET_ULTRAFAST.getOption());
                optionBuilder.append(AppConst.SPACE);
                optionBuilder.append(FFMPEGOptionType.ACODEC_COPY.getOption());
                optionBuilder.append(AppConst.SPACE);
                optionBuilder.append(FFMPEGOptionType.F_FLV.getOption());
                optionBuilder.append(AppConst.SPACE);
                //持久化查询任务
                if(manager.query(room) != null){
                    manager.stop(room);
                }
                rtmpUrl = "rtmp://"+rtmpIp+"/live/"+room;
                optionBuilder.append("\""+ rtmpUrl + "\"");
                String option = optionBuilder.toString();
                ffmpegHandler.convert(room,option);
    

    我这里写的比较繁琐,ffmpeg4的客户端地址也写死了,命令因为要动态生成,所以单独组装命令
    推流这里使用到了nginx的rtmp模块
    然后就可以看到console里面会不断输出推流信息
    这里有个注意点:

    Runtime.exec()执行时JVM会产生一个子进程,该进程与JVM建立三个通道链接:标准输入,标准输出,标准错误。
    Java本地的系统对标准输入和输出所提供的缓冲池有限,所以错误的对标准输出快速的写入和从标准输入快速的读入都有可能造成子进程死锁。
    子进程的输出流,也就是JVM的输入流。子进程不断向控制台输出,如果Java没有把输入流及时清空,会导致缓存区满,导致死锁。
    解决办法就是及时清空输入流,开两个线程把process.getInputStream()和process.getErrorStream()读出来就可以。对于ffmpeg只需要process.getErrorStream()读出来就可以了

    Process process = exec(command);
    		// 创建输出线程
    		OutHandler outHandler=OutHandler.create(process.getErrorStream(), id,ohm);
    

    之后有时间再更新任务持久化相关功能的实现

    展开全文
  • 博主:许振坪的专栏附带源代码;如有相关问题和交流需要,请与博主联系。 博主onvif专栏:http://blog.csdn.net/benkaoya/article/details/72424335
  • Onvif协议要求实现Onvif协议服务的设备支持设备发现以及探测,也就是discovery和probe。如,客户端向网段内的组播地址为239.255.255.250,端口为3702发送广播消息,等待网内Onvif协议设备响应。 响应消息的设备会...

    1、onvif开发流程

    发现设备 ==》 获取能力 ==》 获取媒体信息 ==》 获取视频编码配置 ==》 设置视频编码配置 ==》 获取URI ==》 ONVIF完成 ==》 RTSP播放 ==》 解码

     

    2、原理

           Onvif协议要求实现Onvif协议服务的设备支持设备发现以及探测,也就是discovery和probe。如,客户端向网段内的组播地址为239.255.255.250,端口为3702发送广播消息,等待网内Onvif协议设备响应。

    响应消息的设备会返回自己的IP、UUID、EP Address、Type等,最重要的会返回设备的Device Service Address,格式如: http://192.168.1.2:8080/onvif/devices ,此地址就是为设备提供Onvif服务的服务地址,我们需要使用此地址进行其他的操作。

     

    3、鉴权

           ONVIF中不管是客户端还是设备端,最先实现的接口都是关于能力的那个接口,在客户端实现的函数名也就是[soap_call___tds__GetServiceCapabilities]通过获取的接口才知道设备具有那些能力,能够进行那些操作,服务端最基本的也需要实现这接口,让客户端知道设备支持那些基本操作。但是当设备端作了加密处理的话,即使你实现了这些接口,也不能正常获取到参数的,所以需要在获取设备参数之前,每次都需要作鉴权处理

    例:

    MediaBindingProxy mediaProxy;
    soap_wsse_add_Security(&mediaProxy);
    soap_wsse_add_UsernameTokenDigest(&mediaProxy, "Id", userName.c_str() , passWord.c_str());
    

     

    展开全文
  • ONVIF协议开发之网络摄像头云台控制(C版)

    万次阅读 热门讨论 2019-05-11 15:22:00
    在之前的文章中(《python-onvif实现客户端控制相机云台》),介绍过用python实现基于onvif协议的相机云台控制,考虑到嵌入式端的执行效率问题,还是需要实现C/C++版本的接口,因此尝试这方面的工作。经过将近一周的...
  • 详细介绍了gSOAP的编译过程,对开发ONVIF协议有帮助,是windows下用C++开发的,可以参考一下。
  • ONVIF协议网络摄像机(IPC)客户端程序开发-专栏中附带示例代码。相关博客:http://blog.csdn.net/benkaoya 博客专栏文章:http://blog.csdn.net/benkaoya/article/details/72424335
  • ONVIF协议网络摄像机(IPC)客户端程序开发》专栏,学ONVIF,跟我来!!!
  • Onvif协议快速入门

    千次阅读 2020-11-19 17:08:32
    ONVIF网络视频协议的出现,解决了不同厂商之间开发的各类设备不能融合使用的难题,提供了统一的网络视频开发标准,即最终能够通过ONVIF这个标准化的平台实现不同产品之间的集成。 ONVIF主要为网络视频产品提供标准...
  • 这是ONVIF协议的包装,使您可以获取有关NVT(网络视频传输器)设备,其媒体源,控制PTZ(摇摄-倾斜-缩放)移动并管理预设,检测网络中的设备并控制其事件的信息。 它还将允许您获取有关NVR(网络录像机)Profile G...
  • ONVIF 协议开发

    2016-09-27 14:11:20
    使用gsoap工具生成onvif框架过程; Linux 环境下生成 Linux C。在上gsoap-2.8.31生成 onvif.h(0) 使用工具:wsdl2h -c 产生c语言的代码,否则产生C++(默认) -s 不使用STL代码 -t 指定typemap.dat文件 -o 指定生成的...
  • ONVIF协议开发使用

    2021-11-23 14:09:06
    实现VideoStream,只需完成下列命令 1、GetProfiles 获取媒体能力 2、...NVC为了获取DVT所支持的功能的命令 一、 使用gsoap搭建onvif源码框架 从wsdl生成C头文件 wsdl2h -o onvif.h -c -s -t .\typemap.dat ...
  • onvif协议ptz服务端和客户端程序,可以实现服务端服务和客户端访问
  • 资源为文章ONVIF协议网络摄像机(IPC)客户端程序开发中的示例代码 博客:http://blog.csdn.net/benkaoya 专栏:http://blog.csdn.net/benkaoya/article/details/72424335
  • 基于java结合onvif通过流的方式在监控内容展现在界面,ffmpeg+nginx实现rtsp流转hls流,支持hls的实时视频监控内容。
  • ONVIF协议开发实战指导

    千次阅读 2014-04-27 01:40:40
    只需要知道ONVIF就是AXIS、SONY、BOSH等公司领导制定的一套安防行业设备通用的网络接入协议规范,便于不同厂商的安防设备能够互联集成,改变各自为政的混乱局面,就可以啦。 ONVIF就是Open Network Video Interface...
  • ONVIF协议开发例子程序—设备发现C/S

    热门讨论 2012-11-10 22:00:07
    ONVIF协议例子程序。网上得来。。我最开始做ONVIF就是参考这个例子入门的。
  • 实现嵌入式端onvif网络相机云台控制,具体实现过程参考我的博客https://zongxp.blog.csdn.net/article/details/90108569,对照着流程修改,就一定可以实现,有问题欢迎在博客下留言探讨

空空如也

空空如也

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

onvif协议开发