我试图开发一个控制IP相机与ONVIF.But,我有一个小问题,连接PTZ服务器的ONVIF。这是我的代码:
private void PTZTest(DeviceClient client, double deviceTimeOffset, string ip, int port)
{
// Create Media object
string xaddr = string.Format("http://{0}/onvif/device_service", txtIP.Text);
MediaClient mediaService = OnvifServices.GetOnvifMediaClient(xaddr, deviceTimeOffset, txtUser.Text, txtPassword.Text);
// Create PTZ object
string xaddr2 = string.Format("http://{0}/onvif/ptz_service",txtIP.Text);
PTZClient ptzService = OnvifServices.GetOnvifPTZClient(xaddr2, deviceTimeOffset, txtUser.Text, txtPassword.Text);
// Get target profile
Profile[] mediaProfiles = mediaService.GetProfiles();
Profile mediaProfile = mediaService.GetProfile(mediaProfiles[0].token);
PTZConfigurationOptions ptzConfigurationOptions = ptzService.GetConfigurationOptions(mediaProfile.PTZConfiguration.token);
PTZ.PTZSpeed velocity = new PTZ.PTZSpeed();
velocity.Zoom = new PTZ.Vector1D() { x = speed * ptzConfigurationOptions.Spaces.ContinuousZoomVelocitySpace[0].XRange.Max };当我在PTZConfigurationOptions ptzConfigurationOptions = ptzService.GetConfigurationOptions(mediaProfile.PTZConfiguration.token);行设置一个断点时,我得到了以下错误消息:
服务上没有能够接受消息的侦听端点。这通常是由于SOAP地址或操作不正确造成的。如果存在,请参阅InnerException元素以获得更多信息。
但是我不明白为什么我可以得到PTZ服务的列表和关于mediaService的所有信息,但是我无法获得ptzconfiguration选项。
有人知道到底是什么问题吗?我该怎么解决呢拜托!
发布于 2020-02-13 22:24:01
并非每个onvif设备都会在同一端点上承载其PTZ服务。通常,使用的方法是查询来自DeviceService的GetServices/GetCapabilities调用。这是唯一通常具有相同URL的服务-- "服务“
因此,使用的方法是(在伪码中)
var devService = OnvifServices.GetOnvifDeviceService("http://ip/onvif/device_service)
var services = devService.GetServices() or devService.GetCapabilities()
var ptzServiceInfo = services.Where(x => x.Name.Contains("Ptz));
var ptzServiceInfo = OnvifServices.GetPtzService(ptzServiceInfo.Url);您不使用device_server进行任何ptz_service调用,只需使用它查找设备服务的正确URL --如果您执行GetService调用--响应将包括以下内容
<tds:Service> <tds:Namespace>onvif.org/ver20/ptz/wsdl</tds:Namespace> <tds:XAddr>ip/onvif/ptz</tds:XAddr> </tds:Service> 有关更多细节,请参见onvif.org/specs/core/ONVIF-Core-Specification-v250.pdf
https://stackoverflow.com/questions/60211335
复制相似问题