My question is about the ONVIF specification. http://www.onvif.org/imwp/download.asp?ContentID=18006 In section 5.10, it says :
A service is a collection of related ports. This specification does not mandate any service naming principles.
Lets say that I have the IP address of an NVT (Network Video Transmitter like an IP camera for example), how do I form the address of the device management web service? This service is the entry point of the whole system.
Thank you.
you have to add service in onvif xsdl file ( lets say http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl )
and generate ws client source code ( for java can use wsimport )
As was mentioned the entry point for webservice is http://ip/onvif/device_service
Actually via the WS-Discovery you could only get address of device service. The addresses of the other services you must get with DeviceService:GetServices request which works 100% with address you got before with WS-Discovery.
The convention pointed by Şafak is described in ONVIF standard. But in real life some devices does not follow it. In this case you try send unicast ws-discovery Probe request (or multicast and then filter ProbeMatch replies by ip-address), XAddrs field in ProbeMatch reply will contain the required address for device service.
Just be aware to use everywhere the
*http://IP/onvif/device_service*
url for reaching the services. According to GetServices request:You can have different services on different urls. This has been seen on one of the HikVision cameras. Most of them uses the
*http://IP/onvif/device_service*
.According to the official document (section 5.1.1), you can access the service at
http://<IP address>/onvif/device_service