私は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
「録画」はONVIFレコーダーによって使用されるサービスであることに注意してください。ほとんどのIPカメラはそれをサポートしていません。私はそれがオプションのサービス(サポートされているプロファイルに依存しているため)でデバイスの機能をチェックする必要があると思う:http://www.onvif.org/ver10/device/wsdl/GetCapabilities。最後の行では、getRecordings()を "capabilities"に割り当てています... http://www.onvif.org/onvif/ver10/recording.wsdlを見てください - これは出力タイプですGetServiceCapabilities()のために。ちょうどそれもチェックしてください。 – Sigismondo
Webサーバーのセキュリティポリシーを調べる必要があります。メソッドはコードに存在しているように見えますが、クライアントによって許可されていないか、到達できません。 – Ved
Vedと合意...このWSDLを実装している人は、特定の機能を実装していないか、名前空間がその関数を含まないWSDL宣言を指しています。個人的には、私はこのONVIFのWSDLの選択肢に驚いています。 –