【问题标题】:ONVIF : How to form the device web service address from the IP address of an NVTONVIF : 如何从 NVT 的 IP 地址形成设备 Web 服务地址
【发布时间】:2017-09-18 15:38:18
【问题描述】:

我的问题是关于 ONVIF 规范的。 http://www.onvif.org/imwp/download.asp?ContentID=18006 在第 5.10 节中,它说:

服务是相关端口的集合。本规范不强制要求任何服务命名原则。

假设我有一个 NVT(例如网络视频传输器,如 IP 摄像机)的 IP 地址,我如何形成设备管理 Web 服务的地址?该服务是整个系统的入口。

谢谢。

【问题讨论】:

    标签: camera video-streaming ip specifications onvif


    【解决方案1】:

    根据official document(第5.1.1节),您可以通过http://<IP address>/onvif/device_service访问该服务

    【讨论】:

      【解决方案2】:

      你必须在 onvif xsdl 文件中添加服务(比如说http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl

          <wsdl:definitions ......>
            ..............
               </wsdl:binding>
               <!--===============================-->
               <wsdl:service name="DeviceService">
                   <wsdl:port name="DevicePort" binding="tds:DeviceBinding">
                     <soap:address location="http://ip/onvif/device_service"/>
                   </wsdl:port>
                 </wsdl:service>
          </wsdl:definitions>
      

      并生成ws客户端源码 (对于java可以使用wsimport)

      如前所述,Web 服务的入口点是 http://ip/onvif/device_service

      【讨论】:

        【解决方案3】:

        Şafak 指出的约定在 ONVIF 标准中有所描述。但在现实生活中,一些设备并没有遵循它。在这种情况下,您尝试发送单播 ws-discovery Probe 请求(或多播,然后按 ip-address 过滤 ProbeMatch 回复),ProbeMatch 回复中的 XAddrs 字段将包含设备服务所需的地址。

        【讨论】:

          【解决方案4】:

          请注意在任何地方使用*http://IP/onvif/device_service* url 来访问服务。根据 GetServices 请求:

          <env:Body>
                  <tds:GetServicesResponse>
                      <tds:Service>
                          <tds:Namespace>http://www.onvif.org/ver10/device/wsdl</tds:Namespace>
                          <tds:XAddr>http://IP/onvif/device_service</tds:XAddr>
                          <tds:Version>
                              <tt:Major>2</tt:Major>
                              <tt:Minor>10</tt:Minor>
                          </tds:Version>
                      </tds:Service>
          
                      <tds:Service>
                          <tds:Namespace>http://www.onvif.org/ver10/media/wsdl</tds:Namespace>
                          <tds:XAddr>http://IP/onvif/Media</tds:XAddr>
                          <tds:Version>
                              <tt:Major>2</tt:Major>
                              <tt:Minor>10</tt:Minor>
                          </tds:Version>
                      </tds:Service>
          
                      <tds:Service>
                          <tds:Namespace>http://www.onvif.org/ver10/events/wsdl</tds:Namespace>
                          <tds:XAddr>http://IP/onvif/Events</tds:XAddr>
                          <tds:Version>
                              <tt:Major>2</tt:Major>
                              <tt:Minor>10</tt:Minor>
                          </tds:Version>
                      </tds:Service>
          
                      <tds:Service>
                          <tds:Namespace>http://www.onvif.org/ver20/ptz/wsdl</tds:Namespace>
                          <tds:XAddr>http://IP/onvif/PTZ</tds:XAddr>
                          <tds:Version>
                              <tt:Major>2</tt:Major>
                              <tt:Minor>10</tt:Minor>
                          </tds:Version>
                      </tds:Service>
          
                      <tds:Service>
                          <tds:Namespace>http://www.onvif.org/ver20/imaging/wsdl</tds:Namespace>
                          <tds:XAddr>http://IP/onvif/Imaging</tds:XAddr>
                          <tds:Version>
                              <tt:Major>2</tt:Major>
                              <tt:Minor>10</tt:Minor>
                          </tds:Version>
                      </tds:Service>
          
                      <tds:Service>
                          <tds:Namespace>http://www.onvif.org/ver10/deviceIO/wsdl</tds:Namespace>
                          <tds:XAddr>http://IP/onvif/DeviceIO</tds:XAddr>
                          <tds:Version>
                              <tt:Major>2</tt:Major>
                              <tt:Minor>10</tt:Minor>
                          </tds:Version>
                      </tds:Service>
          
                      <tds:Service>
                          <tds:Namespace>http://www.onvif.org/ver20/analytics/wsdl</tds:Namespace>
                          <tds:XAddr>http://IP/onvif/Analytics</tds:XAddr>
                          <tds:Version>
                              <tt:Major>2</tt:Major>
                              <tt:Minor>10</tt:Minor>
                          </tds:Version>
                      </tds:Service>
                  </tds:GetServicesResponse>
          
              </env:Body>
          

          您可以在不同的网址上拥有不同的服务。 这已在其中一台海康威视摄像机上看到。他们中的大多数使用*http://IP/onvif/device_service*

          【讨论】:

            【解决方案5】:

            实际上通过 WS-Discovery 只能获取设备服务的地址。您必须通过 DeviceService:GetServices 请求获得的其他服务的地址,该请求与您之前通过 WS-Discovery 获得的地址 100% 有效。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-03-31
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-08-16
              相关资源
              最近更新 更多