Проблема с записью с устройства Open ONVIF (Форум сетевого видеоинтерфейса)

90

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

Я создал исходники из 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
Neenu
источник
5
обратите внимание, что «запись» - это служба, используемая рекордерами ONVIF: большинство IP-камер ее не поддерживают. Думаю, вам стоит проверить это в возможностях устройства, поскольку это дополнительная услуга (зависит от поддерживаемого профиля): onvif.org/ver10/device/wsdl/GetCapabilities . Еще одно замечание: в последней строке вы назначаете getRecordings () для «возможностей» ... глядя на onvif.org/onvif/ver10/recording.wsdl - я бы сказал, что это тип вывода для GetServiceCapabilities (). Просто проверьте это еще раз.
Sigi
1
Следует изучить политику безопасности веб-сервера, поскольку метод, похоже, существует в коде, но не разрешен или недоступен для клиента.
Вед
Согласитесь с Ведом ... Тот, кто реализует этот WSDL, либо не реализовал определенные функции, либо пространство имен указывает на объявление WSDL, которое не включает эту функцию. Лично я немного озадачен выбором WSDL в ONVIF.

Ответы:

2

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

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

AMDG
источник
1

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

URL для recording.wsdl службы должно быть http://" + deviceip + "/onvif/recording_service.

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

мпромонет
источник
0

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

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

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

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

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

Ashraf.Shk786
источник