1)在线生成头文件,但因为自带的wsdl2h.exe工具不支持https,需要自己编译一个windows版本工具,支持https还要移植openssl比较繁琐。
抓拍是个很重要的功能,比如在报警视频联动中需要一张实时的图片,很多SDK不提供抓拍功能,而通过预览抓图,得到的图片已不具有实时性,那如何得到实时的图片呢?现在的IPC基本上都支持ONVIF协议,ONVIF协议除了提供RTSP的URL外,其实也给出了抓拍的URL,从Media的GetSnapshotUri获取。
用onvif协议来对设备的网络信息进行获取和设置,这个操作在众多的NVR产品中,用的很少,绝大部分用户都还是习惯直接通过摄像机的web页面进去配置,其实修改网络配置的功能在大部分的NVR中都是具备的,网络的参数主要包括IP地址、子网掩码、网关地址、DNS解析地址、NTP地址、网卡信息、网络协议等,这些都可以通过不同的onvif命令来获取和设置,一直没有搞懂为啥这些要分开不同的命令去处理,其实大可以合并成一个命令嘛,搞得设置个网络信息还要post好多次的数据才行。
视频中的图片的配置参数一般有亮度、饱和度、对比度、锐度等,以前一直以为这些需要通过厂家的私有协议SDK来设置才行,后面通过研究Onvif Device Manager 和 Onvif Device Test Tool 这两个onvif开发的必备工具以后,发现onvif协议也具备了修改 亮度、色彩度、饱和度这三个参数,当然这三个参数我见过的摄像机厂家(主流的十几种)都具备,还有些大厂做的设备还提供了其他详细图片参数的设置比如ICAT。
严格意义上来说,Onvif处理这块算不上音视频开发的内容,为何重新整理放在音视频开发这个类别,主要是为了方便统一管理,而且在视频监控处理这块,通过onvif来拿到音视频流这是必经的阶段,也算是搭边的东西。上一篇文章写的是onvif设备搜索,搜到这些设备以后,第一件事情就是要对设备信息获取一下,比如获取视频流地址,配置套件信息、码流信息、分辨率大小等,这些信息的获取根据具体的需要去获取,也没有必要全部获取,毕竟很可能大部分的信息用不到,按需编码永远都是第一原则,第二原则才是考虑拓展性和稳定性,如果基本的需求都实现不了,那就不是一个真正的软件,考虑再多的拓展性和稳定性都是白搭,说的严重一点就是:所有编程语言都是垃圾,能解决实际需求并变现才是王道!
能够接收摄像机的报警事件,比如几乎所有的摄像机后面会增加报警输入输出接口,如果用户外接了报警输入,则当触发报警以后,对应的事件也会通过onvif传出去,这样就相当于兼容了所有onvif摄像机厂家的报警事件接收,在一些应用系统中,这个功能也是很常见的。接收摄像机的报警信息一般有两种处理方式,一种是订阅,订阅以后摄像机会在请求后一直阻塞等待,如果有新的报警信息则立即返回,否则需要到超时时间才会断开连接请求;还有一种是定时器主动轮询,不断的去询问是否有新的报警事件。关于订阅要阻塞等待的问题,这就涉及到另一个问题,一般Qt默认的并发请求最大6个(貌似这玩意好多浏览器也是这个规约,不知为何这么限定,为了节约系统资源?)这就意味着订阅机制下,最大只能有6个摄像机的报警事件订阅存在,超过就不行,除非有空闲的连接请求断开了,所以很多开发者会选择用其他的http post工具比如curl去处理。
云台控制也是onvif功能中最常用的,最常用的功能排第一的是拿到视频流地址,排第二的就是云台控制了,云台控制的含义就是对带云台的摄像机进行上下左右的移动,一般云台摄像机都是带有一个小电机,一旦收到485或者网络来的正确的指令以后就触发单片机程序,然后单片机程序驱动电机进行转动,所以相对来说云台摄像机比普通的摄像机更耗电,当然价格也更贵。
最近业余时间主要研究音视频开发这块,前面的文章写了好多种视频监控内核,一旦将这些内核搞定以后,视频监控的相关功能水到渠成。做视频监控系统,绕不过onvif这玩意,这玩意主要就是为了统一一个大概的标准,能够对各个厂家的监控设备进行常用的一些操作,比如搜索、获取信息、云台控制、事件订阅、抓拍图片等,如果没有这个规范,那么各个厂家都各自为政,需要用私有的sdk去处理,这样就很麻烦很惨了,几十个厂家就需要几十个sdk,对于程序员来说简直是灾难,想想就很恐怖的事情,哪个程序员不想多活几年!
对设备设置时间很有必要,这个是必备的功能,毕竟大部分的前端设备比如摄像机本身不带BIOS电池的,所以没法存储时间,要么设置了NTP地址来同步时间,要么其他设备主动对他进行设置时间,如果时间不正确了,意味着本地画面显示的时间字符串,本地存储的视频录像文件等,都可能是不正确的,所以一般的处理是NVR一旦连上摄像机设备以后,立马将摄像机的时间设置成NVR的时间,这样就保持了一致。
视频流媒体服务器EasyNVR系统不拘泥、不受限于摄像机的品牌厂商及其配套平台,只要是网络监控摄像机IPC、硬盘录像机NVR、且设备支持标准的RTSP/Onvif协议,都可以接入并播放视频。
使用sudo cp dom.c samples/onvif/命令,拷贝dom.c文件
为满足用户的场景需求,我们的Easy系列视频平台均可提供Windows与Linux版本,如果有用户需要ARM版,我们也可以根据需求编译成ARM版。
通过onvif来调整图片的Brightness(亮度)、ColorSaturation(色彩饱和度)、Contrast(饱和度)这三个参数,可以实时观测到监控画面对应的变化,比如讲亮度Brightness拉到最低,可以看到这个画面一片漆黑。通过onvif来调节图片的颜色光线,就无须通过厂家私有SDK去调节,当然厂家SDK能够去调节的参数肯定更多更全更好速度更快,这个功能用到的地方不多,大部分的时候其实还是安装调试期间,直接在前端摄像机的网页配置界面或者客户端界面上调整好,一般调整好以后基本上不会再去改动,尤其是经过验收的项目,经过专家的建议调整后固定在那个参数就行。
整个onvif模块大部分的功能都有了以后,除了在demo上点点按钮可以执行获取结果显示外,最终还是要应用到视频监控中,在按钮上点点和系统中后台自动运行是两码事,比如onvif校时和事件订阅,不会说是傻到在监控系统界面上提供按钮给用户点击才去执行,最多做的应该是系统设置中提供两个开关比如自动校时、事件订阅,可以方便的开启这几个功能。开启以后等监控系统启动后自动去处理,比如挨个对摄像机进行校时处理以及订阅事件,为了能够做到添加摄像机后自动立即应用,特意改成了在打开摄像机视频画面的时候,主动去实例化DeviceOnvif类(每个摄像机都对应一个实例)
视频监控系统在整个安防领域,已经做到了烂大街的程序,全国起码几百家公司做过类似的系统,当然这一方面的需求量也是非常旺盛的,各种定制化的需求越来越多,尤其是这几年借着人脸识别的东风,发展更加迅猛,人脸识别相关的技术和应用这几年处于风口浪尖,衍生了特别多的应用产品,各种人脸识别的产品遍地开花,刷脸门禁,车站机场人脸识别,刷脸取票等,但是其实大部分内行人士可能都比较绝望,外行感觉像看科幻片一样,老板们各种打鸡血,今天几个亿明天几个亿。
在视频监控系统中,对摄像机进行时间设置也是很有必要的,这样就和服务器或者软件这边统一了时间,一般在摄像机的画面上可以设置OSD标识当前时间,这样存储到视频文件中回放的时候,也能和本地的时间一致,一般的视频监控系统默认都会开启ONVIF校时,通过标准的公开的onvif协议来对前端摄像机设备进行时间设置,当然也可以获取时间。前端摄像机设备和后端管理软件或者服务器时间统一是非常重要的一个因素,本人经历过很多视频监控系统相关的项目,很多时候的报修情况就是因为前端设备时间和服务器端不一致的情况,导致的各种奇奇怪怪的问题。
时隔一年多,重新对视频监控系统的onvif内核重写,一方面为了兼容Qt6,一方面按功能分类提高效率。整体逻辑思路是一样的,主要的改动是由于Qt6不再支持QtXmlPatterns模块(其实这个模块在Qt5的后面的版本也逐渐提示为废弃模块),onvif协议通信中的数据都是带有命名空间的xml数据,用QtXmlPatterns模块去解析是最合适的,现在全部改成了用最原始最基础的QtXml模块去解析,毕竟QtXml模块肯定是一直在的,这是相当基础的模块,无论以后Qt7还是Qt100肯定都会有。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169492.html原文链接:https://javaforall.cn
示例的大华摄像头里面的ONVIF用户管理,如果后面的探测失败,这边的密码修改下,提示成功后再探测尝试
ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(包括摄录前端、录像设备等)完全互通。
预置位在视频监控系统中是不可或缺的存在,响应预置位功能的前提是要带预置位的云台球机,有些普通的云台球机其实不带预置位的,这个要检查清楚,硬件上不支持该功能的,你再怎么点也没反应。在这个视频监控系统的使用过程中,就有不少的用户会问这个问题,为啥他点了云台没法应之类的,前提是要硬件支持才行啊。
由于EasyNVR视频平台分为软件版本和硬件版本的智能云终端,因此用户可以根据自身需求选择。根据某位用户的要求,需要在EasyNVR智能云终端中增加控制矩阵功能,因此我们在EasyNVR硬件内测试通过串口通信控制矩阵,但是在打开串口时遇到报错serial.Open: invalid values for InterCharacterTimeout and MinimumReadSize。
想实现网络监控摄像头进行视频直播的朋友门应该知道,方法其实非常简单,你不需要使用支持直播的网络摄像机,只需要经过一套流媒体服务器将监控摄像头的RTSP视频流转为RTMP\HLS\HTTP-FLV视频流,然后将流地址在网页、微信、或者推流到主流免费的直播平台上,如YOUTUBE、斗鱼等。该方案适合所有网络摄像头,因为他们几乎都支持RTSP协议,你可以使用海康、大华等等厂家的设备,选择范围广,操作简单。
EasyCVR视频智能融合共享平台是TSINGSEE青犀视频云边端架构中一款负责提供安防视频接入的云服务产品,负责国标GB/T28181、海康SDK、ONVIF、RTSP协议、Ehome协议等多种标准的安防视频流的接入和转发,可实现安防视频流的快速采集、转流上云能力。
使用EasyNVR和EasyDSS的用户都知道,我们的产品是使用rtsp流来进行设备与服务的接入,因此对于设备的rtsp地址的获取就变的格外重要。本篇博客将着重介绍如何通过具体的探测工具发现和使用摄像机的rtsp地址。
RTSP拉流流媒体服器软件是Onvif/RTSP流媒体服务,支持RTSP稳定拉流接入,支持Onvif协议接入,支持RTMP/HLS/HTTP-FLV/RTSP分发,将传统安防监控设备互联化,无插件直播等。
二、功能特点 (一)软件模块 视频监控模块,各种停靠小窗体子模块,包括设备列表、图文警情、窗口信息、云台控制、预置位、巡航设置、设备控制、悬浮地图、网页浏览等。 视频回放模块,包括本地回放、远程回放、设备播放、图片回放、视频上传等。 电子地图模块,包括图片地图、在线地图、离线地图、路径规划等。 日志查询模块,包括本地日志、设备日志等。 系统设置模块,包括系统设置(基本设置、视频参数、数据库设置、地图配置、串口配置等)、录像机管理、摄像机管理、轮询配置、用户管理等。 (二)基础功能 支持各种视频流(rtsp、
做视频监控系统,绕不过onvif这玩意,这玩意主要就是为了统一一个大概的标准,能够对各个厂家的监控设备进行常用的一些操作,比如搜索、获取信息、云台控制、事件订阅、抓拍图片等,如果没有这个规范,那么各个厂家都各自为政,需要用私有的sdk去处理,这样就很麻烦很惨了,几十个厂家就需要几十个sdk,对于程序员来说简直是灾难,想想就很恐怖的事情,哪个程序员不想多活几年!
ehome 海康ehome开源服务 简介 EHOME协议是设备和服务器通信的一种推模式协议,适用于支持EHOME协议的网络摄像机、网络球机、DVR、NVR、车载DVR、车载取证系统、单兵、报警主机等设备。 海康设备可以基于ehome协议来主动注册云端,区别于onvif只能在局域网内使用的限制。 本服务软件基于海康私有协议ehome v2.x版本,力争打造一个开源安防基础产品。 功能 实时预览 远程回放 报警监听 语音对讲 架构 系统基于beego框架开发,提供RESTful接口 CMS信令由海康eh
以前不知道onvif也可以做抓拍功能,直到近期重新用Onvif Device Test Tool工具测试的时候,发现还有抓图的接口,于是抓跑分析出要收发的数据,然后加入到自己封装的onvif操作类中,这个抓图有个应用场景就是报警以后,直接通过onvif抓图,而不需要打开实时视频流,基本上不占用什么资源。
Open Network Video Interface Forum,开放型网络视频接口论坛,以公开、开放的原则共同制定开放性行业标准。是一个提供开放网络视频接口的论坛组织。ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。可以让不同厂商所提供的产品,均可以通过统一的语言来进行交流,增加了协同性和灵活性。
事件订阅是近期增加的功能,主要是因为遇到越来越多的一个应用场景,能够接收摄像机的报警事件,比如几乎所有的摄像机后面会增加报警输入输出接口,如果用户外接了报警输入,则当触发报警以后,对应的事件也会通过onvif传出去,这样就相当于兼容了所有onvif摄像机厂家的报警事件接收,在一些应用系统中,这个功能也是很常见的。
上一篇文章写的是onvif设备搜索,搜到这些设备以后,第一件事情就是要对设备信息获取一下,比如获取视频流地址,配置套件信息、码流信息、分辨率大小等,这些信息的获取根据具体的需要去获取,也没有必要全部获取,毕竟很可能大部分的信息用不到,按需编码永远都是第一原则,第二原则才是考虑拓展性和稳定性,如果基本的需求都实现不了,那就不是一个真正的软件,考虑再多的拓展性和稳定性都是白搭,说的严重一点就是:所有编程语言都是垃圾,能解决实际需求并变现才是王道!
通道切换在视频监控系统中是最基础的必备功能,一般都会提供1通道+4通道+6通道+8通道+9通道+16通道这几个通道切换,可能做得比较好的还会提供24通道+32通道的,这个可能对电脑的配置就有一定要求了,一般来说,超过9个通道实时显示视频流,基本上会采用子码流来显示,如果都采用主码流,电脑压力非常巨大,CPU占用很高,内存也高,不过现在的电脑配置越来越高,基本上四千多的台式机,配置已经非常好了,显示个16个通道的实时视频毫无压力。 Qt中的布局非常好用,尤其是QGridLayout表格布局,可以指定行列放置控件,而且还可以设置每个控件占用几行几列,这样就可以完美的实现各种通道布局了。比如6通道,可以设置通道1占用两行两列,其他通道各站一行一列即可,当切换布局的时候,其他隐藏即可。
鉴于服务器端的安全性因素,更多的网络管理员更愿意在Linux操作系统下搭建流媒体服务器系统进行互联网的实时直播和点播。有很多开发者在使用我们流媒体服务器的时候,有时会因为对程序不了解而出现或多或少的疑问,我们今天来总结几个比较常见的问题。
IPC出来的码流都是RTP码流,可能是裸的H264,也可能是PS流。如果要推流的话,有2种方案可以选择
一、功能特点 支持16画面切换,全屏切换等,包括1+4+6+8+9+13+16画面切换。 支持alt+enter全屏,esc退出全屏。 自定义信息框+错误框+询问框+右下角提示框。 17套皮肤样式随意更换,所有样式全部统一,包括菜单等。 云台仪表盘鼠标移上去高亮,八个方位精准识别。 底部画面工具栏(画面分割切换+截图声音等设置)移上去高亮。 可在配置文件更改左上角logo+中文软件名称+英文软件名称。 封装了百度地图,视图切换,设备点位,鼠标按下获取经纬度等。 堆栈窗体,每个窗体都是个单独的qwidget,
随着互联网基础设施建设的不断完善和发展,带宽的不断提速,尤其是光纤入户、4G/5G/NB-IoT各种网络技术的大规模商用,视频随时随地可看、可控、可视频会议调度指挥、可智能预警、可智能检索回溯的诉求越来越多,尤其是移动视频应用技术和智能语音技术的普及和发展,使得视频智能分析和语音智能理解支持的需求在各行各业越来越受到青睐和重视,简简单单的视频直播、视频会议、语音播报已经越来越不符合商业规律。而在传统视频监控、视频会议行业里面,互联网思维、架构和技术完全可以成功引入,尤其是在移动互联网、物联网、深度学习、智能分析、云端组网方面的融合技术,完全能够满足新形势下的各种行业的终端智能化的需要。
ONVIF标准将为网络视频设备之间的信息交换定义通用协议,包括装置搜寻、实时视频、音频、元数据和控制信息等。网络视频产品由此所能提供的多种可能性,使终端用户,集成商,顾问和生产厂商能够轻松地从中获益,并获得高性价比、更灵活的解决方案、市场扩张的机会以及更低的风险。
由于使用gSOAP版本为2.8.102,需要对typemap.dat文件进行修改,否则会在后面动态库生成中提示错误,错误如下所示:
EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理。在视频能力上,平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、H.265自动转码、电子地图、集群、智能分析以及平台级联等。
EasyNVR属于轻量级的视频监控平台,可拓展性强、兼容度高,可支持RTSP/ONVIF协议接入前端设备。在接入前端设备时,可通过自带的ONVIF探测功能,将摄像头设备接入平台,并能实现云台控制,包括转动、变焦、放大等操作。
EasyNVR是我们基于RTSP/Onvif协议推出的视频能力平台,既有硬件设备,又有软件平台,是比较灵活的一项流媒体项目。EasyNVR可实现设备接入、实时直播、录像、检索与回放、存储、视频分发等视频能力服务,可覆盖全终端平台(pc、手机、平板等终端),在智慧工厂、智慧工地、智慧社区、智慧校园等场景中有大量落地应用。
很多摄像头都支持Onvif协议,这也是大众需求的结果,因此我们EasyNVR也开发了支持Onvif探测的功能,大家在本篇可以查看摄像头开启Onvif的方法:海康摄像头如何配置开启ONVIF协议。
采用GPU来绘制实时视频一直以来都是个难点,如果是安防行业的做视频监控开发这块的人员,这个坎必须迈过去,本人一直从事的是安防行业的电子围栏这个相当小众的细分市场的开发,视频监控这块仅仅是周边技术玩一玩探讨一下,关于GPU绘制这块着实走了不少的弯路。
领取专属 10元无门槛券
手把手带您无忧上云