簡體   English   中英

如何使用onvif ptz wsdl

[英]How to use the onvif ptz wsdl

我正在嘗試使用http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl文件控制PTZ攝像機。

我可以毫無問題地使用GotoPreset函數,但ContinuousMove函數會拋出ProtocolException。

指南的第77頁顯示了如何使用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個參數。 額外的參數是超時,所以我認為這不會產生那么大的差異,但也許其他一些不同的東西導致我的代碼失敗。

我讀了這個問題的問題,因為有人說PTZ攝像機不支持ver20。 但是當我向wsdl添加服務引用並將ver20更改為ver10時,我收到一條消息,指出添加wsdl失敗,因為它包含無法解析的鏈接。 此外,當我在我的webbrowser中粘貼ver10 url( http://www.onvif.org/onvif/ver10/ptz/wsdl/ptz.wsdl )時,它顯示的是xml而不是wsdl。

如果我沒有使用正確的wsdl文件或者什么可以解決我當前設置中的行為,我怎么能使用正確的wsdl文件?

我找到了解決方案。

事實證明我誤解了PtzClient.ContunuousMove中的超時參數。 在之前的wsdl版本(ver10)中,每當您希望當前的PTZ操作停止時,您必須調用Stop函數。 在wsdl的ver20中,PTZ函數(除非調用Stop函數)將持續在timeout參數中指定的時間。 我認為這是一個響應超時或其他什么,但事實並非如此。

現在調用ContinuousMove看起來像這樣:

PtzClient.ContinuousMove(profile.token, velocity, "PT1S");

字符串中的數字代表PTZ操作應該持續的秒數。

希望它可以幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM