Проблема с записью с устройства Open ONVIF (Network Video Interface Forum)

Я работаю над проектом Open Network Video Interface Forum-Java и следуя шагам, описанным в ONVIF Application Programmer Guide.

Я создал источники из wsdls, предоставленные на сайте ONVIF. Я могу получить URI в реальном времени с использованием media.wsdl. Теперь у меня проблема с записью. Коды, которые я пробовал, приведены ниже:

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

Ответ 1

Когда вы пытались использовать источник мультимедиа, вы запросили несанкционированное действие, по-видимому, так как сервер возвратил код ошибки 405. Либо метод запрещен к использованию, либо вам нужны учетные данные для использования этого метода.

Что касается Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized, @Sigismondo прав насчет того, что большинство ip-камер не поддерживают его. Для записи с ip-камеры вам понадобится альтернативный метод записи (литерал и каламбура).

Ответ 2

Вы используете http://" + deviceip + "/onvif/media_service для доступа к службе записи, но это media.wsdl. Поэтому, когда вы пытаетесь вызвать getRecordings в медиа-службе, кажется нормальным, вы получаете сообщение об ошибке.

URL-адрес recording.wsdl должен быть http://" + deviceip + "/onvif/recording_service.

Чтобы получить URL-адрес для доступа к службе записи, вы должны запросить его из метода GetCapabilities службы devicemgmt.wsdl.

Ответ 3

HTTP 405 - Недопустимый ресурс обычно встречается в IIS. Эта проблема возникает, если выполняются следующие условия:

  • Вы не указываете имя файла. Например, вы не указываете http://Server/Web/...

  • Объектная модель сценариев (SOM) включена.

  • Вызывается событие DTC.

Итак, когда SOM включен, < тег > вставляется на страницу, где тег недействителен, означает, что он не содержит никаких действий.