我試圖用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文件,如果我沒有使用它或什麼可以解決我當前的設置中的行爲?