2014-01-08 7 views
89

私はOpen Network Video Interface Forum-Javaプロジェクトで、ONVIF Application Programmer's Guideに記載されている手順に従っています。Open ONVIF(Network Video Interface Forum)デバイスからの録画に関する問題

私はONVIFサイトで提供されているwsdlsからソースを生成しました。 media.wsdlを使用してライブストリームURIを取得できます。今は録音に問題があります。私が試みたコードは以下の通りである:

RecordingService recording_ervice = new RecordingService(); 
RecordingPort record_port = recording_ervice.getRecordingPort(); 


BindingProvider bindingProvider = (BindingProvider) record_port; 

// Add a security handler for the credentials 
final Binding binding = bindingProvider.getBinding(); 
List<Handler> handlerList = binding.getHandlerChain(); 
if (handlerList == null) { 
    handlerList = new ArrayList<Handler>(); 
} 

handlerList.add(new RecordStream.SecurityHandler()); 
// binding.setHandlerChain(handlerList); 

// Set the actual web services address instead of the mock service 
Map<String, Object> requestContext = bindingProvider.getRequestContext(); 

requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://" + deviceip + "/onvif/media_service"); 
requestContext.put(BindingProvider.USERNAME_PROPERTY, user); 
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pass); 

Recordings recordings = record_port.getRecordings(); 

ランに上記のコードは、のようにエラー与える:私はまた、メディアサービスと試み

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized 

を、エラーがある:

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed 
+5

「録画」はONVIFレコーダーによって使用されるサービスであることに注意してください。ほとんどのIPカメラはそれをサポートしていません。私はそれがオプションのサービス(サポートされているプロファイルに依存しているため)でデバイスの機能をチェックする必要があると思う:http://www.onvif.org/ver10/device/wsdl/GetCapabilities。最後の行では、getRecordings()を "capabilities"に割り当てています... http://www.onvif.org/onvif/ver10/recording.wsdlを見てください - これは出力タイプですGetServiceCapabilities()のために。ちょうどそれもチェックしてください。 – Sigismondo

+1

Webサーバーのセキュリティポリシーを調べる必要があります。メソッドはコードに存在しているように見えますが、クライアントによって許可されていないか、到達できません。 – Ved

+0

Vedと合意...このWSDLを実装している人は、特定の機能を実装していないか、名前空間がその関数を含まないWSDL宣言を指しています。個人的には、私はこのONVIFのWSDLの選択肢に驚いています。 –

答えて

2

メディアソースを試したときに、サーバーがエラーコード405を返したために、不正な操作が行われたように見えました。このメソッドは使用が禁止されているか、またはmetho d。

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognizedについては、@Sigismondoはほとんどのipカメラがそれをサポートしていないという事実については正しいです。 ipカメラから録画するには、別の録画方法(リテラルとパン)が必要です。

1

録音サービスにはhttp://" + deviceip + "/onvif/media_serviceを使用していますが、これはmedia.wsdlサービスです。したがって、メディアサービスでgetRecordingsを呼び出そうとすると、通常はエラーが発生します。

recording.wsdlサービスのURLはhttp://" + deviceip + "/onvif/recording_serviceである必要があります。

corect URLを記録サービスに到達させるには、devicemgmt.wsdlサービスのGetCapabilitiesメソッドから要求する必要があります。

0

HTTP 405 - リソースが許可されていないは通常、IISで発生します。次の条件に該当する場合 、この問題が発生します。

  • ファイル名を指定しないでください。たとえば、 http:// Server/Web/...を指定しないでください。

  • スクリプトオブジェクトモデル(SOM)が有効です。

  • DTCイベントが呼び出されます。だから、

SOMが有効になっている場合、>タグはタグが無効でページに挿入され<フォームは、それがどんなアクションを含まないことを意味します。