Nodeflux Central

Integrasi dengan Lenz & Visionaire

Posisi Liodra dalam platform Nodeflux, cara mendaftarkannya sebagai Media Server (Visionaire Media) di Lenz, pemetaan endpoint Lenz ke Liodra, dan cara memakai stream Liodra sebagai sumber Visionaire.

Liodra adalah komponen video dari platform Nodeflux: ia berdiri di antara kamera dan dua produk lainnya. Lenz memakainya sebagai Media Server untuk merekam dan memutar ulang; Visionaire dapat memakainya sebagai sumber stream yang stabil alih-alih menarik langsung dari kamera. Halaman ini menjelaskan ketiga hubungan itu.

ingest RTSP / RTMP / HTTP-TS Event Media Server (srs)/api/v1/* DVR 30 s Kamera CCTVRTSP / RTMP LiodraAPI :9080 · RTMP :1935 · RTSP :8554 VisionaireStream + Pipeline Lenz Dashboard recordings/

Di antarmuka dan API Lenz, Liodra disebut Visionaire Media dan memiliki tipe Media Server srs. Kedua nama merujuk ke perangkat lunak yang sama.


Liodra di Lenz

Lenz tidak menyimpan video. Setiap fitur yang menyentuh rekaman di Lenz adalah panggilan ke Liodra yang di-proxy oleh backend Lenz, dengan otentikasi dan Federation ditangani di sisi Lenz. Registrasi satu Media Server cukup untuk mengaktifkan seluruh fitur di bawah.

Mendaftarkan Liodra sebagai Media Server

Pastikan Liodra dapat dijangkau dari backend Lenz

Backend Lenz (bukan browser operator) yang memanggil Liodra, jadi host dan port 9080 harus terbuka dari server Lenz. Uji dari server Lenz:

curl http://<host-liodra>:9080/api/v1/health

Tambahkan server di Lenz

Buka Media Servers → Manajemen Server → Tambah Server Media dan isi:

Field LenzNilai untuk Liodra
Nama ServerNama bebas, mis. Liodra Gedung A.
URL HostHost Liodra tanpa port, mis. http://192.168.1.50.
Tipesrs (Visionaire Media).
Port API9080 (nilai PORT Liodra). Boleh dikosongkan; default Lenz juga 9080.
Port PlaybackSama dengan Port API pada deployment standar. Isi berbeda hanya bila /api/v1/playbacks dan /api/v1/play/ts diekspos lewat port lain (reverse proxy).

Klik Periksa Kesehatan; Lenz memanggil GET {host}:{port}/api/v1/health dan menampilkan hasilnya. Simpan dengan Buat Server.

Lewat API Lenz, hal yang sama adalah POST /api/nvr-servers dengan {"name": "...", "host": "http://192.168.1.50", "type": "srs", "api_port": 9080, "playback_port": 9080}.

Jalankan Liodra dengan flag yang sesuai

Fitur Lenz hanya berfungsi bila fitur padanannya aktif di Liodra: Recorded Streams, Playback, Daily Playback, dan Retensi memerlukan --as-nvr; Video Management memerlukan --with-vod. Tanpa flag tersebut Liodra menjawab 404 dan Lenz menampilkan tabel kosong atau error.

Pemetaan Fitur dan Endpoint

Fitur LenzEndpoint LenzEndpoint Liodra yang dipanggilFlag Liodra
Periksa Kesehatan, kolom Status Kesehatan(internal)GET /api/v1/healthselalu
Lihat Stream Media (stream aktif di server)(internal)GET /api/v1/streams, GET /api/v1/clientsselalu
Kickout klien(internal)DELETE /api/v1/clients/{id}selalu
Recorded StreamsGET /api/visionaire-media/{id}/recordingsGET /api/v1/recordings--as-nvr
Playback (daftar segmen)GET /api/visionaire-media/{id}/playback?path=GET /api/v1/playbacks/{path}--as-nvr
Playback (pemutar video)URL segmen dari respons di atasGET /api/v1/playbacks/{path}?start&duration[&transcode=true]--as-nvr
Unduh KlipGET /api/visionaire-media/{id}/playback/downloadGET /api/v1/playbacks/{path}?start&duration&download=true--as-nvr
Daily Playback: date pickerGET /api/visionaire-media/{id}/recordings/{path}/dailyGET /api/v1/recordings/{path}/daily--as-nvr
Daily Playback: timeline 24 jamGET /api/visionaire-media/{id}/recordings/{path}/hourlyGET /api/v1/recordings/{path}/hourly--as-nvr
Retensi rekamanGET/PUT /api/visionaire-media/{id}/retention[...]GET /api/v1/retention, PUT /api/v1/retention/schedule, PUT /api/v1/retention/default--as-nvr --set-retention
Video Management: daftar, detail, hapus(internal)GET /api/v1/videos, GET/DELETE /api/v1/videos/{id}--with-vod
Video Management: unggah dengan resume(internal)POST /api/v1/videos/upload?autoplay=true, GET .../upload/resume/{session_id}--with-vod
Video Management: koreksi waktu rekam, thumbnail(internal)PATCH /api/v1/videos/{id}, GET /api/v1/videos/{id}/thumbnail--with-vod
Video Management: restart/stop device video(internal)POST /api/v1/devices/file/vod/{id}/restart, .../stop--with-vod
Streams: toggle Aktifkan RecordingPOST /api/visionaire-media/{id}/devices/{scheme}, lalu POST /api/nvrsPOST /api/v1/devices/{scheme} (channel live, name = stream_id Visionaire, silent_audio: true)--as-nvr

Beberapa hal yang perlu diketahui saat membaca tabel ini:

  • Path yang dipakai Lenz (path pada Recorded Streams) adalah {app}/{name} Liodra, disusun dari field app dan name respons /api/v1/recordings.
  • Satuan retensi sama di kedua sisi: Lenz mengirim duration_days, disk_quota_mb, dan headroom_percent apa adanya ke Liodra, dan menampilkan max_recommended_quota_mb dari GET /api/v1/retention sebagai batas atas kuota yang bisa dipilih operator.
  • Federation: parameter instance pada endpoint Lenz memilih instance Lenz mana yang meneruskan panggilan; Liodra sendiri tidak mengetahui Federation.

Recording dari Halaman Streams

Saat operator mengaktifkan Aktifkan Recording pada sebuah stream di halaman Streams Lenz dan memilih Media Server, Lenz melakukan dua hal secara berurutan:

  1. Mendaftarkan device di Liodra lewat proxy: POST /api/visionaire-media/{nvrServerId}/devices/{scheme} dengan body { "name": "<stream_id>", "url": "<stream_address>", "channel": "live", "silent_audio": true }. scheme diambil dari prefiks stream_address (rtsp atau rtmp), dan name adalah stream_id Visionaire. Liodra mulai menarik kamera dan merekamnya ke recordings/live/{stream_id}/.
  2. Mencatat NVR Resource di database Lenz (POST /api/nvrs) dengan cam_original_url (URL kamera asli) dan nvr_original_url berbentuk {host}:{playback_port}/api/v1/playbacks/live/{stream_id}. URL inilah yang dipakai halaman Events, Search, dan Alert untuk memanggil playback Liodra pada timestamp kejadian.

Karena nama device mengikuti stream_id, rekaman untuk stream itu selalu ditemukan di path live/{stream_id} di Liodra. Langkah pertama dilewati pada dua kondisi: bila stream_address sudah menunjuk ke host Liodra itu sendiri (mode media stream, Visionaire membaca dari Liodra sehingga device sudah ada; nvr_original_url mengikuti path stream tersebut), atau bila backend Media Server adalah hikvision (rekaman dikelola NVR Hikvision, bukan Liodra).

Registrasi device dilakukan dari browser operator melalui backend Lenz, bukan oleh backend Lenz secara mandiri. Bila registrasi gagal (misalnya Liodra tidak berjalan dengan --as-nvr, atau URL kamera tidak valid), Lenz tetap menyimpan stream dan menampilkan peringatan; ulangi lewat dialog Edit Stream setelah Liodra pulih.

RTMP Stream (POST /api/rtmp-streams) adalah pemetaan yang lebih ringan untuk alur di mana sumbernya mem-publish RTMP langsung ke Liodra (mobile, encoder) dan Visionaire membaca dari Liodra, bukan dari kamera.


Liodra sebagai Sumber Visionaire

Visionaire membaca video lewat URL stream pada entitas Stream-nya. Alih-alih URL kamera, Anda dapat memberi URL Liodra. Ini berguna bila:

  • satu kamera dibutuhkan oleh beberapa node Visionaire atau beberapa sistem sekaligus (kamera hanya ditarik satu kali oleh Liodra);
  • kamera berada di jaringan yang hanya dapat dijangkau Liodra;
  • Anda ingin menganalisis file video atau live stream media sosial sebagai stream (lewat VoD atau VoP Liodra);
  • Anda ingin memutar ulang footage lama ke pipeline analitik untuk pengujian.

Setiap stream yang dipublish ke Liodra juga tersedia lewat server RTSP di port 8554:

rtsp://<host-liodra>:8554/live/camera_front

Pada pembuatan Stream di Visionaire (POST /streams/{node_num}), isi stream_address dengan URL ini. Bila RTMP_SECRET diset, play dari host lain memerlukan token: rtsp://<host>:8554/live/camera_front?token=<token> (token yang sama dengan hasil POST /api/v1/register). Tidak tersedia di image legacy -srs6.

rtmp://<host-liodra>:1935/live/camera_front

Untuk channel vod dan vop/* tambahkan parameter ?vhost=<channel-utama>, mis. rtmp://<host>:1935/vod/9876543210ab?vhost=vod, karena keduanya disajikan lewat host virtual terpisah yang tidak direkam. Aturan token sama seperti RTSP.

http://<host-liodra>:9080/api/v1/play/ts/live/camera_front

Berguna bila hanya port 9080 yang terbuka. Tambahkan ?transcode=true bila kamera HEVC dan konsumen memerlukan H.264. Tidak ada token karena proxy internal dikecualikan dari otentikasi RTMP.

Liodra melakukan stream copy: codec, resolusi, dan frame rate yang diterima Visionaire sama persis dengan kamera. Bila Visionaire memerlukan H.264 dan kamera mengirim HEVC, gunakan jalur HTTP-TS dengan ?transcode=true, atau aktifkan Ingest Transcode ke h264 pada Liodra.


Alur Lengkap: dari Kamera ke Playback di Lenz

  1. Kamera didaftarkan di Liodra (langsung lewat POST /api/v1/devices/rtsp, atau otomatis oleh Lenz saat Aktifkan Recording). Liodra mem-publish stream-nya dan DVR menulis segmen ke recordings/live/{name}/.
  2. Visionaire membaca stream dari kamera atau dari Liodra dan menghasilkan Event; Lenz menampilkannya.
  3. Operator membuka Media Servers → Recorded Streams di Lenz, memilih Media Server Liodra; Lenz memanggil /api/v1/recordings dan menampilkan stream beserta status live/record.
  4. Operator membuka Daily Playback; Lenz memanggil .../daily untuk date picker dan .../hourly?date= untuk timeline. Rentang yang ditampilkan berasal dari segmen yang benar-benar berisi media.
  5. Operator memutar rentang waktu; pemutar Lenz memuat /api/v1/playbacks/{path}?start&duration (dengan transcode=true bila HEVC) dan menerima MPEG-TS.
  6. Operator mengunduh klip; Lenz memanggil .../download, Liodra mengirim MP4 dengan codec asli.
  7. Setiap malam pada jam yang dijadwalkan, retensi Liodra menghapus segmen yang melewati batas durasi atau kuota channel.

Troubleshooting Integrasi


Selanjutnya

On this page