ONVIF:如何从NVT的IP地址形成设备Web服务地址

时间:2010-08-29 22:24:18

标签: camera video-streaming ip specifications onvif

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

  

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

假设我有NVT的IP地址(例如网络视频发射器,如IP摄像机),我该如何形成设备管理网络服务的地址?这项服务是整个系统的切入点。

谢谢。

5 个答案:

答案 0 :(得分:4)

根据official document(第5.1.1节),您可以http://<IP address>/onvif/device_service

访问该服务

答案 1 :(得分: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)

如上所述,webservice的入口点为http://ip/onvif/device_service

答案 2 :(得分:0)

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

答案 3 :(得分:0)

请注意在*http://IP/onvif/device_service*网址的任何地方使用它来获取服务。根据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>

您可以在不同的网址上使用不同的服务。 在其中一台HikVision相机上可以看到这一点。他们中的大多数使用*http://IP/onvif/device_service*

答案 4 :(得分:0)

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