Problem mit der Aufnahme vom Open ONVIF-Gerät (Network Video Interface Forum)


90

Ich arbeite am Open Network Video Interface Forum-Java-Projekt und folge den im ONVIF Application Programmer's Guide beschriebenen Schritten .

Ich habe Quellen von der wsdlsin ONVIF bereitgestellten Site generiert. Ich kann den Live-Stream-URI mit dem abrufen media.wsdl. Jetzt habe ich ein Problem mit der Aufnahme. Die Codes, die ich ausprobiert habe, sind unten angegeben:

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();

Der obige Code beim Ausführen gibt einen Fehler aus als:

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

Ich habe es auch mit Media Service versucht, dann ist der Fehler:

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

5
Beachten Sie, dass "Aufnahme" der Dienst ist, der von ONVIF-Rekordern verwendet wird: Die meisten IP-Kameras unterstützen ihn nicht. Ich denke, Sie sollten dies in den Gerätefunktionen überprüfen, da es sich um einen optionalen Dienst handelt (abhängig vom unterstützten Profil): onvif.org/ver10/device/wsdl/GetCapabilities . Noch ein Hinweis: In der letzten Zeile weisen Sie getRecordings () "Funktionen" zu ... siehe onvif.org/onvif/ver10/recording.wsdl - Ich würde sagen, dass dies der Ausgabetyp für GetServiceCapabilities () ist. Überprüfen Sie es auch noch einmal.
Sigismondo

1
Sicherheitsrichtlinien des Webservers sollten überprüft werden, da die Methode im Code vorhanden zu sein scheint, aber vom Client nicht zugelassen oder erreichbar ist.
Ved

Stimme Ved zu ... Wer diese WSDL implementiert, hat entweder bestimmte Funktionen nicht implementiert oder der Namespace zeigt auf eine WSDL-Deklaration, die die Funktion nicht enthält. Persönlich bin ich ein bisschen überrascht von dieser ONVIF-Wahl von WSDL.

Antworten:


2

Als Sie es mit der Medienquelle versucht haben, haben Sie anscheinend eine nicht autorisierte Aktion angefordert, da der Server den Fehlercode 405 zurückgegeben hat. Entweder ist die Verwendung der Methode verboten, oder Sie benötigen einen Berechtigungsnachweis, um die Methode zu verwenden.

Was Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognizedist @Sigismondo Recht über die Tatsache , dass die meisten IP - Kameras ist es nicht unterstützen. Sie benötigen eine alternative Aufnahmemethode (Literal und Wortspiel), um von einer IP-Kamera aufzunehmen.


1

Sie verwenden http://" + deviceip + "/onvif/media_service, um den Aufzeichnungsdienst zu erreichen, dies ist jedoch ein media.wsdl- Dienst. Wenn Sie also versuchen, getRecordings im Mediendienst aufzurufen, wird normalerweise eine Fehlermeldung angezeigt.

Die URL für recording.wsdl Service sollte http://" + deviceip + "/onvif/recording_service.

Um die korrekte URL zu erhalten, um den Aufzeichnungsdienst zu erreichen, sollten Sie sie von der GetCapabilities-Methode des devicemgmt.wsdl- Dienstes anfordern .


0

HTTP 405 - Ressource nicht zulässig tritt normalerweise in IIS auf. Dieses Problem tritt auf, wenn die folgenden Bedingungen erfüllt sind:

  • Sie geben den Dateinamen nicht an. Beispielsweise geben Sie http: // Server / Web / ... nicht an.

  • Das Scripting Object Model (SOM) ist aktiviert.

  • Ein DTC-Ereignis wird aufgerufen.

Wenn der SOM aktiviert ist, wird ein <form> -Tag in die Seite eingefügt. Das Tag ist ungültig, dh es enthält keine Aktion.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.