您好,欢迎来到钮旅网。
搜索
您的当前位置:首页EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(一)使用Onvif协议进行设备发现以及指定设备信息探测

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

来源:钮旅网

背景分析

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

1.准备阶段

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

2.发现原理
  • 使用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.想要更多

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

目前能查到的说明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官网:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务