Проблема із записом із пристрою 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

5
зауважте, що "запис" - це послуга, яку використовують записувачі ONVIF: більшість ip-камер цього не підтримують. Я думаю, вам слід перевірити це у можливостях пристрою, оскільки це додаткова послуга (залежить від підтримуваного профілю): onvif.org/ver10/device/wsdl/GetCapabilities . Ще одне зауваження: в останньому рядку ви призначаєте getRecordings () "можливостям" ... дивлячись на onvif.org/onvif/ver10/recording.wsdl - я б сказав, що це тип виводу для GetServiceCapabilities (). Просто перевірте це теж.
Sigismondo

1
Політику безпеки веб-сервера слід вивчити, оскільки метод, здається, існує в коді, але не дозволений або недоступний для клієнта.
Вед,

Погодьтеся з Ведом ... Той, хто реалізує цей WSDL, або не реалізував певні функції, або простір імен вказує на декларацію WSDL, яка не включає цю функцію. Особисто я трохи вражений цим вибором ONVIF WSDL.

Відповіді:


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-камери.


1

Ви використовуєте http://" + deviceip + "/onvif/media_serviceдля доступу до служби запису, але це послуга media.wsdl . Отже, коли ви намагаєтесь зателефонувати getRecordings на медіа-службі, здається нормальним, ви отримуєте повідомлення про помилку.

URL-адреса для служби запис.wsdl повинна бути http://" + deviceip + "/onvif/recording_service.

Для того, щоб отримати URL-адресу corect для доступу до служби запису, вам слід запитати його за допомогою методу GetCapabilities служби devicemgmt.wsdl .


0

HTTP 405 - Заборонений ресурс зазвичай виникає в IIS. Ця проблема виникає, якщо виконуються такі умови:

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

  • Модель об’єктів сценаріїв (SOM) увімкнена.

  • Викликається подія DTC.

Отже, коли SOM увімкнено, тег <form> вставляється на сторінку, тег недійсний означає, що він не містить жодної дії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.