software nvr interfaz hikvision dahua camara app java networking recording ip-camera onvif

java - nvr - Problema con la grabación desde el dispositivo Open ONVIF(Network Video Interface Forum)



onvif nvr (3)

Cuando intentó con la fuente de medios, solicitó una acción no autorizada aparentemente ya que el servidor devolvió el código de error 405. O bien se prohíbe el uso del método o necesita una credencial para usar el método.

En cuanto a Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method ''ns11:GetServiceCapabilities'' not implemented: method name or namespace not recognized , @Sigismondo tiene razón sobre el hecho de que la mayoría de las cámaras ip no lo admiten . Necesitará un método de grabación alternativo (literal y de juego de palabras) para grabar desde una cámara ip.

Estoy trabajando en el proyecto Open Network Video Interface Forum-Java y siguiendo los pasos descritos en la Guía del programador de aplicaciones ONVIF .

He generado fuentes de wsdls proporcionadas en el sitio de ONVIF. Puedo recuperar el URI de transmisión en vivo usando media.wsdl . Ahora tengo un problema con la grabación. Los códigos que he probado se dan a continuación:

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

El código anterior en ejecución da un error como:

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

También probé con el servicio de medios, entonces el error es:

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


Está utilizando http://" + deviceip + "/onvif/media_service para llegar al servicio de grabación, pero este es un servicio de media.wsdl . Entonces, cuando intentas llamar a getRecordings en el servicio de medios, parece normal que recibas un error.

La url para el servicio de onvif.org/onvif/ver10/recording.wsdl debe ser http://" + deviceip + "/onvif/recording_service .

Para que la URL de corect llegue al servicio de grabación, debe solicitarla desde el método devicemgmt.wsdl servicio devicemgmt.wsdl .


HTTP 405: el recurso no permitido generalmente ocurre en IIS. Este problema ocurre si las siguientes condiciones son verdaderas:

  • No especifica el nombre del archivo. Por ejemplo, no especifica http: // Servidor / Web / ...

  • El Modelo de Objetos de Scripting (SOM) está habilitado.

  • Se llama un evento DTC.

Por lo tanto, cuando se habilita el SOM, se inserta una etiqueta <form> en la página donde la etiqueta no es válida, lo que significa que no contiene ninguna acción.