我试图用http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl文件控制PTZ摄像机。如何使用onvif ptz wsdl
我可以使用没有问题的GotoPreset函数,但ContinuousMove函数抛出ProtocolException。 “指南”显示了如何使用ConinuousMove函数的示例。
按照这份指南为我提供了下面的代码:
OnvifMediaClient.Profile[] profs = this.mediaClient.GetProfiles();
OnvifMediaClient.Profile profile = mediaClient.GetProfile(profs[0].token);
OnvifPTZ.PTZConfigurationOptions options = PtzClient.GetConfigurationOptions(profile.token);
OnvifPTZ.PTZSpeed velocity = new OnvifPTZ.PTZSpeed();
velocity.PanTilt = new OnvifPTZ.Vector2D();
velocity.Zoom = new OnvifPTZ.Vector1D();
velocity.PanTilt.x = options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Max;
velocity.PanTilt.y = options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Max;
velocity.PanTilt.space = options.Spaces.ContinuousPanTiltVelocitySpace[0].URI;
velocity.Zoom.x = options.Spaces.ContinuousZoomVelocitySpace[0].XRange.Max;
velocity.Zoom.space = options.Spaces.ContinuousZoomVelocitySpace[0].URI;
PtzClient.ContinuousMove(profile.token, velocity, "1000");
Thread.Sleep(2000);
PtzClient.Stop(profile.token, true, true);
但也有与导向在代码中的一些差异,例如实际ContinuousMove功能需要在我的代码3个参数,而不是2中导游。额外的参数是一个超时,所以我认为这不会有太大的差别,但也许其他一些事情是不同的,导致我的代码失败。
我想知道this这个问题,在那个人说的PTZ摄像机不支持ver20的问题。但是,当我将ver20的服务引用添加到wsdl并将其更改为ver10时,我收到一条消息,指出添加wsdl失败,因为它包含无法解析的链接。另外,当我粘贴ver10网址(http://www.onvif.org/onvif/ver10/ptz/wsdl/ptz.wsdl)在我的浏览器时,它显示了一个xml而不是wsdl。
如何使用正确的wsdl文件,如果我没有使用它或什么可以解决我当前的设置中的行为?