Masalah dengan perekaman dari perangkat Open ONVIF (Network Video Interface Forum)

90

Saya sedang mengerjakan proyek Open Network Video Interface Forum-Java dan mengikuti langkah-langkah yang dijelaskan dalam Panduan Programmer Aplikasi ONVIF .

Saya telah menghasilkan sumber dari yang wsdlsdisediakan di situs ONVIF. Saya dapat mengambil URI streaming langsung menggunakan media.wsdl. Sekarang saya punya masalah dengan rekaman. Kode yang saya coba diberikan di bawah ini:

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

Kode di atas saat dijalankan memberikan kesalahan sebagai:

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

Saya juga mencoba dengan layanan media, maka kesalahannya adalah:

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed
Neenu
sumber
5
perhatikan bahwa "perekaman" adalah layanan yang digunakan oleh perekam ONVIF: kebanyakan kamera ip tidak mendukungnya. Saya pikir Anda harus memeriksanya di kapabilitas perangkat, karena ini adalah layanan opsional (tergantung pada profil yang didukung): onvif.org/ver10/device/wsdl/GetCapabilities . Satu catatan lagi: di baris terakhir Anda menetapkan getRecordings () ke "kapabilitas" ... melihat onvif.org/onvif/ver10/recording.wsdl - Saya akan mengatakan bahwa ini adalah tipe keluaran untuk GetServiceCapabilities (). Periksa kembali juga.
Sigi
1
kebijakan keamanan server web harus diperiksa, karena metode tampaknya ada dalam kode tetapi tidak diizinkan atau dapat dijangkau oleh klien.
Ved
Setuju dengan Ved ... Siapa pun yang mengimplementasikan WSDL ini tidak mengimplementasikan fitur tertentu atau namespace mengarah ke deklarasi WSDL yang tidak menyertakan fungsi tersebut. Secara pribadi, saya sedikit terkejut dengan pilihan WSDL ONVIF ini.

Jawaban:

2

Ketika Anda mencoba dengan sumber media, Anda meminta tindakan tidak sah karena server mengembalikan kode Kesalahan 405. Metode tersebut dilarang digunakan, atau Anda memerlukan kredensial untuk menggunakan metode tersebut.

Adapun Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized, @Sigismondo benar tentang fakta bahwa kebanyakan kamera ip tidak mendukungnya. Anda akan membutuhkan metode perekaman alternatif (literal dan pun) untuk merekam dari kamera ip.

AMDG
sumber
1

Anda menggunakan http://" + deviceip + "/onvif/media_serviceuntuk mencapai layanan Perekaman, tetapi ini adalah layanan media.wsdl . Jadi, ketika Anda mencoba memanggil getRecordings pada layanan media, tampaknya normal Anda menerima kesalahan.

Url untuk layanan recording.wsdl harus http://" + deviceip + "/onvif/recording_service.

Untuk mendapatkan URL corect untuk mencapai layanan perekaman, Anda harus memintanya dari metode GetCapabilities dari layanan devicemgmt.wsdl .

mpromonet
sumber
0

HTTP 405 - Sumber daya tidak diperbolehkan biasanya terjadi di IIS. Masalah ini terjadi jika kondisi berikut ini benar:

  • Anda tidak menentukan nama file. Misalnya, Anda tidak menentukan http: // Server / Web / ...

  • The Scripting Object Model (SOM) diaktifkan.

  • Acara DTC dipanggil.

Jadi, ketika SOM diaktifkan , tag <form> dimasukkan ke halaman, tag tidak valid berarti tidak mengandung tindakan apa pun.

Ashraf.Shk786
sumber