EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案中使用Onvif协议获取视频设备快照

存储网络行业协会SNIA(StorageNetworking Industry Association)快照的定义:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。需要注意的是:快照是完全可用的拷贝,但不是一份完整的拷贝。EasyNVR可以获取快照信息以及如何抓取快照的相关问题,我们已经在前文进行详细说明,本篇博文为大家介绍另一种快照抓取的方法。

流程

1、获取设备能力Capabilities

获取设备的能力,并且可以获取到Media和PTZ的URI,使用Media的URI,可以进行快照的抓取


    _tds__GetCapabilities* capabilities = soap_new__tds__GetCapabilities(proxyDevice, -1);
    tt__CapabilityCategory* category = new tt__CapabilityCategory;
    capabilities->Category = category;
    *(capabilities->Category) = tt__CapabilityCategory__All;
    _tds__GetCapabilitiesResponse* response = soap_new__tds__GetCapabilitiesResponse(proxyDevice, -1);
    if (SOAP_OK == proxyDevice->GetCapabilities(capabilities, response))
    {
        if (response->Capabilities)
        {
            //Media URI: response->Capabilities->Media->XAddr;
            //PTZ URI: response->Capabilities->PTZ->XAddr;
        }
    }

2、获取Media Profile

获取Profile token可以获取对应的快照


    _trt__GetProfiles* getProfiles = soap_new__trt__GetProfiles(proxyMedia, -1);
    _trt__GetProfilesResponse* response = soap_new__trt__GetProfilesResponse(proxyMedia, -1);
    if (SOAP_OK == proxyMedia->GetProfiles(getProfiles, response))
    {
        int size = response->__sizeProfiles;
        for (int i = 0; i < size; ++i)
        {
            if (response->Profiles[i])
            {
                //Media Profile Token: response->Profiles[i]->token;
                //一般设备包含多个Profile Token,包含主码流、子码流、第三码流
            }
        }
    }

3、获取快照访问地址

快照访问地址通常为HTTP地址,可以通过这个HTTP地址GET到快照文件


      MediaBindingProxy* mediaProxy = new MediaBindingProxy;
      mediaProxy->soap_endpoint = mediaUrl.c_str();

      if (!security(mediaProxy, username, password))
      {
          delete mediaProxy;
          return result;
      }

      _trt__GetSnapshotUri* snap = soap_new__trt__GetSnapshotUri(mediaProxy, -1);
      _trt__GetSnapshotUriResponse* response = soap_new__trt__GetSnapshotUriResponse(mediaProxy, -1);
      snap->ProfileToken = const_cast<char*>(profile.c_str());

      if (SOAP_OK == mediaProxy->GetSnapshotUri(snap, response))
      {
          if (response->MediaUri && response->MediaUri->Uri)
          {
              //response->MediaUri->Uri
              //快照地址
          }
      }

      if (response)
          soap_delete__trt__GetSnapshotUriResponse(mediaProxy, response);

      if (snap)
          soap_delete__trt__GetSnapshotUri(mediaProxy, snap);

      return result;

EasyNVR硬件设备

EasyNVR智能云终端硬件设备,填补了互联网直播行业设备空白,软硬一体,云端运维。体积小,方便放置部署;7*24小时不间断运行,低功耗;省去自建视频服务器高额费用;专属视频服务,免除了与其他硬件的相互影响,通电联网即可成功运行,部署操作简单。
EasyNVR硬件

EasyNVR应用场景

EasyNVR可以说已经成为国内视频互联网化基础建设的排头兵,几乎各个民生行业都已经有了EasyNVR视频能力输出的身影,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

posted @ 2019-06-22 17:40  Babosa|EasyDarwin  阅读(355)  评论(0编辑  收藏  举报