Sự cố với ghi từ thiết bị Open ONVIF (Diễn đàn giao diện video mạng)


90

Tôi đang làm việc trong dự án Diễn đàn giao diện video mạng mở-Java và làm theo các bước được mô tả trong Hướng dẫn dành cho lập trình viên ứng dụng ONVIF .

Tôi đã tạo các nguồn từ wsdlstrang ONVIF được cung cấp. Tôi có thể truy xuất URI luồng trực tiếp bằng cách sử dụng media.wsdl. Bây giờ tôi gặp sự cố với việc ghi âm. Các mã mà tôi đã thử được cung cấp bên dưới:

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

Đoạn mã trên khi chạy đưa ra một lỗi như sau:

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

Tôi cũng đã thử với dịch vụ phương tiện, sau đó lỗi là:

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

5
lưu ý rằng "ghi âm" là dịch vụ được sử dụng bởi đầu ghi ONVIF: hầu hết các camera ip không hỗ trợ nó. Tôi nghĩ bạn nên kiểm tra nó trong khả năng của thiết bị, vì nó là một dịch vụ tùy chọn (phụ thuộc vào cấu hình được hỗ trợ): onvif.org/ver10/device/wsdl/GetCapabilities . Một lưu ý nữa: ở dòng cuối cùng bạn đang gán getRecordings () cho "các khả năng" ... hãy xem onvif.org/onvif/ver10/recording.wsdl - Tôi muốn nói rằng đây là kiểu đầu ra cho GetServiceCapabilities (). Chỉ cần kiểm tra kỹ nó quá.
Sigismondo

1
chính sách bảo mật của máy chủ web nên được kiểm tra, vì phương pháp dường như tồn tại trong mã nhưng không được phép hoặc không thể truy cập bởi ứng dụng khách.
Ved

Đồng ý với Ved ... Bất kỳ ai đang triển khai WSDL này hoặc chưa triển khai một số tính năng nhất định hoặc vùng tên đang trỏ đến một khai báo WSDL không bao gồm chức năng. Cá nhân tôi hơi ngạc nhiên với sự lựa chọn ONVIF này của WSDL.

Câu trả lời:


2

Khi bạn thử với nguồn phương tiện, bạn đã yêu cầu một hành động trái phép rõ ràng là do máy chủ trả về Mã lỗi 405. Phương pháp bị cấm sử dụng hoặc bạn cần có thông tin xác thực để sử dụng phương pháp.

Về phần Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized, @Sigismondo nói đúng về thực tế là hầu hết các camera ip không hỗ trợ nó. Bạn sẽ cần một phương pháp ghi thay thế (theo nghĩa đen và chơi chữ) để ghi từ camera ip.


1

Bạn đang sử dụng http://" + deviceip + "/onvif/media_serviceđể truy cập dịch vụ Ghi âm, nhưng đây là dịch vụ media.wsdl . Vì vậy, khi bạn cố gắng gọi getRecordings trên dịch vụ phương tiện, có vẻ như bạn sẽ nhận được lỗi bình thường.

Url cho recording.wsdl dịch vụ nên http://" + deviceip + "/onvif/recording_service.

Để có được URL chính xác để truy cập dịch vụ ghi âm, bạn nên yêu cầu nó từ phương thức GetCapabilities của dịch vụ devicemgmt.wsdl .


0

HTTP 405 - Tài nguyên không được phép thường xảy ra trong IIS. Sự cố này xảy ra nếu các điều kiện sau là đúng:

  • Bạn không chỉ định tên tệp. Ví dụ: bạn không chỉ định http: // Server / Web / ...

  • Mô hình đối tượng kịch bản (SOM) được bật.

  • Một sự kiện DTC được gọi.

Vì vậy, khi SOM được bật, thẻ <form> được chèn vào trang, thẻ không hợp lệ có nghĩa là nó không chứa bất kỳ hành động nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.