2015-06-27 461 views
1

我是新入ONVIF。我與相機的web服務建立了連接,我可以從相機請求一些數據(我使用的方法描述如下:ONVIF Authentication in .NET 4.0 with Visual Studios 2010)。我也可以從Media webservice索取信息。不幸的是,當我調用GetOSDs()或CreateOSD()方法時,我得到「可選操作未實現」異常。 GetVideoSourceConfigurations()方法正在工作,所以我假設我對Media webservice的處理程序正常,而且這些方法實際上並未實現,但在由製造商提供的相機的桌面軟件中,我可以修改OSD以便應用程序以某種方式接收此數據,我做錯了什麼。我的代碼:ONVIF c# - 設置osd或攝像頭標題

EndpointAddress serviceAddress = new EndpointAddress("http://192.168.1.64/onvif/device_service"); 
EndpointAddress mediaAddress = new EndpointAddress("http://192.168.1.64/onvif/Media"); 

HttpTransportBindingElement httpBinding = new HttpTransportBindingElement(); 

httpBinding.AuthenticationScheme = AuthenticationSchemes.Digest; 

var messegeElement = new TextMessageEncodingBindingElement(); 

messegeElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None); 

CustomBinding bind = new CustomBinding(messegeElement, httpBinding); 

     // Add our custom behavior - this require the Microsoft WSE 3.0 SDK 
PasswordDigestBehavior behavior = new PasswordDigestBehavior("admin", "12345"); 
MediaClient media = new MediaClient(bind, mediaAddress); 
DeviceClient client = new DeviceClient(bind, serviceAddress); 

client.Endpoint.Behaviors.Add(behavior); 
media.Endpoint.Behaviors.Add(behavior); 

     // We can now ask informations 
var date = client.GetSystemDateAndTime(); // OK 
var configs = media.GetVideoSourceConfigurations(); // OK 
var osds = media.GetOSDs(configs.ElementAt(0).token); // exception Optional Method Not Implemented 
var osds2 = media.GetOSDs(""); // exception Optional Method Not Implemented 

我的目標是以編程方式每隔2秒在屏幕上設置一些覆蓋文本。它可以是OSD,它可以是名稱,但它必須在記錄中後來可見。有任何想法嗎?

+0

看看分組嗅探器你的應用程序和供應商軟件之間的區別是什麼。我懷疑他們沒有使用ONVIF編輯OSD。 – ChrisWard1000

回答

0

Onvif OSD實現是可選的,大多數製造商沒有實現它。

他們只是檢查他們的相機是否存在未測試OSD的Onvif設備測試工具。

雖然相機確實有其他方法來檢查和配置OSD文本。通常還有一個不基於Onvif的其他REST接口。