Backend Hikvision
Menjalankan Liodra di atas NVR Hikvision yang sudah ada lewat ISAPI, sehingga Lenz dan integrator memakai API yang sama untuk penemuan rekaman dan playback.
Selain merekam sendiri, Liodra dapat berjalan sebagai lapisan API di atas NVR Hikvision. Dalam mode ini tidak ada media engine dan tidak ada proses ingest: channel, rekaman, dan retensi dikelola NVR, sementara Liodra menerjemahkan endpoint /api/v1/recordings, /api/v1/playbacks, dan /api/v1/play/ts ke panggilan ISAPI. Tujuannya adalah paritas antarmuka: klien yang sudah terintegrasi dengan Liodra (termasuk Lenz) dapat membaca rekaman NVR Hikvision tanpa kode khusus.
Backend Hikvision berstatus prototipe. Tidak semua fitur backend standar memiliki padanan, dan perilakunya bergantung pada firmware NVR. Untuk deployment baru, gunakan backend standar.
Menjalankan
Berikan argumen posisi hikvision dan kredensial NVR:
docker run -d \
--name liodra-hikv \
--restart unless-stopped \
-p 9080:9080 \
-p 8080:8080 \
-e HIKV_BASE_URL=http://192.168.1.64 \
-e HIKV_USERNAME=admin \
-e HIKV_PASSWORD=YourPassword \
-v /srv/liodra/storage:/usr/share/nginx/html/storage \
registry.gitlab.com/nodefluxio/liodra:3.9.0 hikvision| Variable | Wajib | Default | Keterangan |
|---|---|---|---|
HIKV_BASE_URL | Ya | (kosong) | URL dasar NVR, mis. http://192.168.1.64. Container keluar bila kosong. |
HIKV_PASSWORD | Ya | (kosong) | Password admin NVR. Container keluar bila kosong. |
HIKV_USERNAME | Tidak | admin | Username NVR. |
Yang berbeda dari backend standar:
- Tidak ada media engine. Container hanya menjalankan lapisan API dan dashboard monitor (port
8080). Port1935dan8554tidak dipakai. - Playback aktif otomatis. Argumen
hikvisionmenyetelENABLE_PLAYBACK=true;--as-nvrtidak diperlukan. - Tidak ada manajemen device.
/api/v1/devices/*tidak didaftarkan. Tambah dan hapus kamera di NVR. - Tidak ada retensi, VoD, dan broadcast.
--set-retention,--with-vod, dan--broadcast-ondiabaikan. Umur rekaman ditentukan NVR. --verbosetetap berlaku.
Format Path
Endpoint terpadu menerima path yang bentuknya bergantung backend. Pada Hikvision, path terdiri dari tiga segmen atau lebih: {channel}/{namaKamera}/{trackID}, dengan trackID diteruskan ke ISAPI (mis. 101 untuk channel 1 main stream, 601 untuk channel 6).
# Temukan apa yang tersedia di NVR
curl http://localhost:9080/api/v1/recordings
# Distribusi rekaman harian dan per jam
curl "http://localhost:9080/api/v1/recordings/live/NF_OUT_Lounge/601/daily"
curl "http://localhost:9080/api/v1/recordings/live/NF_OUT_Lounge/601/hourly?date=2026-09-03"
# Playback berbasis waktu (60 detik)
curl "http://localhost:9080/api/v1/playbacks/live/NF_OUT_Lounge/601?start=2026-09-03T02:30:00Z&duration=60" -o clip.ts
# Unduh MP4 (memakai API download native ISAPI)
curl "http://localhost:9080/api/v1/playbacks/live/NF_OUT_Lounge/601?start=2026-09-03T02:30:00Z&duration=60&download=true" -o clip.mp4
# Live view: RTSP NVR dikonversi ke HTTP-TS
vlc "http://localhost:9080/api/v1/play/ts/live/NF_OUT_Lounge/601"GET /api/v1/recordings mengembalikan app berbentuk live/{namaKamera} dan name berupa track ID, jadi path playback tinggal disusun dari keduanya.
Ketersediaan Endpoint per Backend
| Endpoint | Standar | Hikvision |
|---|---|---|
/api/v1/health, /api/v1/version, /api/v1/config, /api/v1/resource-stat | Ya | Ya |
/api/v1/streams | Ya | Ya (channel online dengan URL RTSP) |
/api/v1/recordings, .../daily, .../hourly | Ya | Ya |
/api/v1/playbacks/{path} | Ya | Ya (download memakai ISAPI native) |
/api/v1/play/ts/{path} | Ya | Ya |
/api/v1/monitor/* | Ya | Ya (tanpa proses ingest) |
/api/v1/devices/* | Ya | Tidak |
/api/v1/clients/* | Ya | Tidak |
DELETE /api/v1/recordings/{path} | Ya | Tidak |
/api/v1/retention/* | Ya | Tidak |
/api/v1/videos/* | Ya | Tidak |
/api/v1/broadcast/*, /ws/v1/broadcast/* | Ya | Tidak |
/api/v1/register | Ya | Tidak |
/api/v1/hikv/channels, /api/v1/hikv/channels/status | Tidak | Ya |
Cara Kerja
- Penemuan rekaman menanyakan ISAPI untuk rekaman dalam setahun terakhir; hanya channel yang benar-benar punya rekaman yang dicantumkan.
livediambil dari status online channel,recorddari jadwal rekam track (enableSchedule). - Distribusi per jam mendeteksi zona waktu NVR secara otomatis dan mengonversi tanggal UTC yang Anda kirim ke waktu lokal NVR sebelum mencari, sehingga hasilnya konsisten dengan backend standar yang serba UTC.
- Playback stream membuka RTSP playback NVR untuk jendela waktu yang diminta dan mengalirkannya sebagai MPEG-TS; download memakai API unduh native ISAPI sehingga MP4 yang dihasilkan berasal langsung dari NVR.
- Live view menarik RTSP channel dari NVR dan mengonversinya ke HTTP-TS;
?transcode=trueberlaku untuk channel HEVC.
Hubungan dengan Tipe Server hikvision di Lenz
Lenz memiliki dua cara menjangkau NVR Hikvision:
- Langsung, dengan mendaftarkan Media Server bertipe
hikvision. Lenz berbicara dengan NVR sendiri; fitur terbatas pada Recorded Streams dan Playback. - Lewat Liodra backend Hikvision, dengan mendaftarkan Liodra sebagai Media Server bertipe
srsyang menunjuk ke port9080container ini. Lenz memakai jalur API yang sama seperti backend standar, tetapi fitur yang tidak ada padanannya di NVR (manajemen device, kickout, retensi, Video Management) akan menjawab404.
Pilih cara pertama untuk NVR tunggal yang hanya perlu playback. Cara kedua berguna bila Anda menginginkan satu bentuk API untuk semua Media Server, misalnya pada integrasi kustom yang membaca /api/v1/recordings dari banyak lokasi.
Troubleshooting
Selanjutnya
Konfigurasi
Referensi environment variable Liodra (inti, storage, flag fitur, auto-restart, upload, on-demand, eksperimental) serta format recordings.yaml dan retentions.yaml.
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.