众所周知,EasyNVR不拘泥、不受限于摄像机的品牌厂商及其配套平台,只要是网络监控摄像机IPC、硬盘录像机NVR、且设备支持标准的RTSP/Onvif协议,均可以接入实时视频流进入EasyNVR系统进行直播、录像、检索与回放服务。关于EasyNVR,能够移步基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控具体了解。同时EasyNVR支持使用onvif协议进行设备发现、云台控制、onvif地址获取等功能。web
本篇博文着重对EasyNVR如何进行设备发现进行说明服务器
首先,咱们要了解Onvif协议(https://www.onvif.org/),关于如何使用gsoap进行onvif客户端的开发前文已经探讨,gsoap的onvif框架生成请自行google。Onvif协议的功能有不少,本文只探讨安防监控直播经常使用的几种功能。网络
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服务的服务地址,咱们须要使用此地址进行其余的操做。架构
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); }
上述操做咱们能够发现到统一网段内的设备,或者能够广播到的设备,可是,一旦咱们出现了跨网段没法广播到的设备,咱们如何进行设备信息获取呢?框架
首先,咱们须要知道这个设备的IP地址,不然仍是无从下手,若是你不知道,无力继续…运维
在知道设备的IP地址时,同理,咱们能够向此设备进行探测,也就是咱们说的probe分布式
目前能查到的说明Onvif如何获取指定设备信息的,估计也只有我这一篇了svg
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云管理平台是新一代基于创新的超融合和技术构建,具有完整的视频流媒体服务能力和运维管理服务能力的云架构平台,可将分布在不一样区域和网络环境下的多套EasyNVR设备,统一接口进行登记和管理,借助云端的宽带资源解决单路设备在云直播中多路分发观看所需的上行宽带问题,及分布式存储在云端的回放问题。ui
客户端经过EasyNVS云管理平台上的EasyNVR列表以及每一个网络摄像头的在线状态和快照,获取对应摄像头的视频流数据远程运维,同时实现按需直播,下降网络宽带及服务器压力。google
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