背景分析

众所周知,EasyNVR不拘泥、不受限于摄像机的品牌厂商及其配套平台,只要是网络监控摄像机IPC、硬盘录像机NVR、且设备支持标准的RTSP/Onvif协议,都可以接入实时视频流进入EasyNVR系统进行直播、录像、检索与回放服务。关于EasyNVR,可以移步基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控具体了解。同时EasyNVR支持使用onvif协议进行设备发现、云台控制、onvif地址获取等功能。

本篇博文着重对EasyNVR如何进行设备发现进行说明

1.准备阶段

首先,我们要了解Onvif协议(https://www.onvif.org/),关于如何使用gsoap进行onvif客户端的开发前文已经探讨,gsoap的onvif框架生成请自行google。Onvif协议的功能有很多,本文只探讨安防监控直播常用的几种功能。

2.发现原理

Onvif协议要求实现Onvif协议服务的设备支持设备发现以及设备探测,也就是discovery和probe。discovery,客户端向网段内的组播地址为239.255.255.250,端口为3702发送广播消息,等待网内Onvif协议设备响应。响应消息的设备会返回自己的IP、UUID、EP Address、Type等,最重要的会返回设备的Device Service Address,格式如: http://192.168.1.2:8080/onvif/devices ,此地址就是为设备提供Onvif服务的服务地址,我们需要使用此地址进行其他的操作。

  • 使用gsoap进行discover devices

SOAP_ENV__Header header;
soap_default_SOAP_ENV__Header(soap_, &header); header.wsa__MessageID = const_cast<char*>(soap_wsa_rand_uuid(soap_));
header.wsa__To = "urn:schemas-xmlsoap-org:ws:2005:04:discovery";
header.wsa__Action = "http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe";
soap_->header = &header; wsdd__ScopesType scopesType;
soap_default_wsdd__ScopesType(soap_, &scopesType);
scopesType.__item = "";
wsdd__ProbeType probeType;
soap_default_wsdd__ProbeType(soap_, &probeType);
probeType.Scopes = &scopesType;
probeType.Types = ""; __wsdd__ProbeMatches probeMatches;
int result = soap_send___wsdd__Probe(soap_, "soap.udp://239.255.255.250:3702", NULL, &probeType);
if (result == SOAP_OK)
{
do
{
result = soap_recv___wsdd__ProbeMatches(soap_, &probeMatches);
if (result == SOAP_OK)
{
//处理接收到的响应消息,提取设备信息
//这里我们通常需要IP、Device Service Address
//IP: soap_->ip
//Address: probeMatches.wsdd__ProbeMatches->ProbeMatch->XAddrs
}
else
{
break;
}
} while (true);
}

3.想要更多

上述操作我们可以发现到统一网段内的设备,或者可以广播到的设备,但是,一旦我们出现了跨网段无法广播到的设备,我们如何进行设备信息获取呢?

  • 首先,我们需要知道这个设备的IP地址,否则还是无从下手,如果你不知道,无力继续…

  • 在知道设备的IP地址时,同理,我们可以向此设备进行探测,也就是我们说的probe

目前能查到的说明Onvif如何获取指定设备信息的,估计也只有我这一篇了


SOAP_ENV__Header header;
soap_default_SOAP_ENV__Header(soap_, &header); header.wsa__MessageID = const_cast<char*>(soap_wsa_rand_uuid(soap_));
header.wsa__To = "urn:schemas-xmlsoap-org:ws:2005:04:discovery";
header.wsa__Action = "http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe";
soap_->header = &header; wsdd__ScopesType scopesType;
soap_default_wsdd__ScopesType(soap_, &scopesType);
scopesType.__item = "";
wsdd__ProbeType probeType;
soap_default_wsdd__ProbeType(soap_, &probeType);
probeType.Scopes = &scopesType;
probeType.Types = ""; __wsdd__ProbeMatches probeMatches;
std::string soapAddress(Format("soap.udp://%s:3702", host));
if (soap_send___wsdd__Probe(soap_, soapAddress.c_str(), NULL, &probeType) == SOAP_OK)
{
if (soap_recv___wsdd__ProbeMatches(soap_, &probeMatches) == SOAP_OK)
//Address: probeMatches.wsdd__ProbeMatches->ProbeMatch->XAddrs
}

EasyNVS云管理平台(免费使用)

EasyNVS云管理平台是新一代基于创新的超融合和技术构建,具备完整的视频流媒体服务能力和运维管理服务能力的云架构平台,可将分布在不同区域和网络环境下的多套EasyNVR设备,统一接口进行登记和管理,借助云端的宽带资源解决单路设备在云直播中多路分发观看所需的上行宽带问题,及分布式存储在云端的回放问题。

客户端通过EasyNVS云管理平台上的EasyNVR列表以及每个网络摄像头的在线状态和快照,获取对应摄像头的视频流数据远程运维,同时实现按需直播,降低网络宽带及服务器压力。

EasyNVR应用场景

EasyNVR可以说已经成为国内视频互联网化基础建设的排头兵,几乎各个民生行业都已经有了EasyNVR视频能力输出的身影,EasyNVR多年服务于各行各业视频基础建设,EasyNVR的可靠性、完整性、稳定性已经受到了业界的广泛认可!



平安工地

智慧校园

关于EasyNVR

EasyNVR是一款拥有完整、自主、可控知识产权,同时又能够具备软硬一体功能的安防互联网化流媒体服务器,能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP、Onvif协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发。详情可访问EasyNVR官网:http://www.easynvr.com

EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(一)使用Onvif协议进行设备发现以及指定设备信息探测的更多相关文章

  1. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(二)使用Onvif协议进行设备RTSP地址获取

    背景介绍 EasyNVR最大的优势就是兼容性,通过RTSP协议接入传统网络摄像机.NVR.编码器等,使用RTSP协议接入能兼容市面上绝大多数网络摄像机等源设备,最大程度的提高整体方案的硬件设备的兼容性 ...

  2. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案使用详情功能-通道配置Excel导入导出

    使用EasyNVR的用户都有知道,由于EasyNVR是将设备与EasyNVR的通道进行绑定的,因此EasyNVR是通过手动的通道配置来进行设备接入的,这样可以做到将设备的和通道对应的接入.但是,如果手 ...

  3. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案之使用RTSP流判断摄像机设备是否在线以及快照抓取

    背景分析 熟知EasyNVR产品的小伙伴都知道,通过纯Web化的交互方式,只要配置出摄像机的IP.端口.用户名.密码等信息,就可以将地址进行通道配置完成,即可将设备接入.如果设备支持Onvif协议,E ...

  4. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案之使用ffmpeg保存快照数据方法与代码

    背景分析 EasyNVR主要功能模块有设备发现与接入.实时直播.摄像机控制.录像与管理.设备快照与状态维护.第三方平台对接,其中设备快照与状态维护主要包括定时检测通道设备的在线状态.定时对通道摄像机进 ...

  5. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案中使用Onvif协议控制视频设备预置位转动

    EasyNVR支持预置位控制,包括转到指定预置位,设置指定预置位,删除指定预置位.预置位在安防领域有较为普遍的应用,可以进行很多既定位置的跳转,很方便.之前我们说过如何用Onvif协议进行设备的发现, ...

  6. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案安装使用常见问题的分析

    EasyNVR对于互联网的视频直播还是有着一定的贡献的.为了方便用户的体验使用,我们也在互联网上放置了对应的试用版本,并且也会随着功能是更新也会定期的更新上去.软件包也会配置对应的使用文档和说明. 许 ...

  7. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案使用过程中问题的自我排查-设备不在线问题自我排查检测

    由于EasyNVR的受众越来越多,时常会遇到很多类似的问题咨询,之前虽然有写过很多的博文进行技术的或者使用问题的解答,随着客户询问的增多,我发现,要想让客户了解问题和解决问题,往往引导和给一个思路比直 ...

  8. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(三)使用Onvif协议进行设备PTZ云台控制

    背景分析 熟悉EasyNVR产品的盆友们应该都知道,EasyNVR主要完成的是RTSP视频流到RTMP/HLS/Flv的转码,并提供了一套api和一个可视化管理平台来便于调用.同时支持ONVIF协议进 ...

  9. EasyNVR无插件H5/HLS/m3u8直播解决方案中Windows系统服务启动错误问题的修复:EasyNVR_Service 服务因 函数不正确。 服务特定错误而停止。

    最近在做某地市移动公司景观直播的项目时,遇到一个问题,当我们部署EasyNVR为系统服务后,居然出现了无法启动服务的现象,表面上看,提示是系统服务启动失败,实际通过查看windows 系统日志: 查找 ...

随机推荐

  1. XSS简单练习

    xss平台: https://xss.haozi.me题解: https://blog.csdn.net/AlexYoung28/article/details/82315538 对在xss.haoz ...

  2. python 监听键盘输入

    import sys, select, tty, termios old_attr = termios.tcgetattr(sys.stdin) tty.setcbreak(sys.stdin.fil ...

  3. python 中根据python版本(2或3)定义函数

    示意代码如下: #_*_coding:UTF-8_*_ import time import socket import os import sys if sys.version_info.major ...

  4. JavaScript数组常用操作方法

    ES5操作数组的方法 1.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3]; var ar ...

  5. 微信开发:"errcode": -1000,"errmsg": "system error"错误的解决办法

    最近在微信开发使用微信公众平台接口调试工具时遇到错误. 错误再现:使用appid及appsecret在该测试工具中获取access_token,检查问题时,校验全部通过,但是无法获取access_to ...

  6. Discuz! 3.3全站帖子自动添加图片alt标签

    网站想要更好的适应搜索引擎的话,就要把最基础的一些小优化标签做好, 虽然说现在搜索都很厉害能够识别图片,但是除非的你的图片每一张都是周杰伦.范冰冰等知名图片... 不然你还是要给你自己的图添加alt标 ...

  7. loadrunner:传json

    loadrunner传k-v,用web_custom_request函数. init里面执行登录,根据返回获取到tokenId,action中,执行登录后的操作. 详细脚本如下: vuser_init ...

  8. 面向IO编程--一切皆文件

    in Unix, everything is a file.This simplifies the manipulation of data and devices into a set of cor ...

  9. day 11

    Clear thinking requires courage rather than intelligence. 清晰的思维需要勇气而不是智力.

  10. nginx之系统参数优化

    系统参数优化 默认的Linux内核参数考虑的是最通用场景,不符合用于支持高并发访问的Web服务器的定义,根据业务特点来进行调整,当Nginx作为静态web内容服务器.反向代理或者提供压缩服务器的服务器 ...