Nodeflux Central
Instalasi

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
VariableWajibDefaultKeterangan
HIKV_BASE_URLYa(kosong)URL dasar NVR, mis. http://192.168.1.64. Container keluar bila kosong.
HIKV_PASSWORDYa(kosong)Password admin NVR. Container keluar bila kosong.
HIKV_USERNAMETidakadminUsername NVR.

Yang berbeda dari backend standar:

  • Tidak ada media engine. Container hanya menjalankan lapisan API dan dashboard monitor (port 8080). Port 1935 dan 8554 tidak dipakai.
  • Playback aktif otomatis. Argumen hikvision menyetel ENABLE_PLAYBACK=true; --as-nvr tidak 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-on diabaikan. Umur rekaman ditentukan NVR.
  • --verbose tetap 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

EndpointStandarHikvision
/api/v1/health, /api/v1/version, /api/v1/config, /api/v1/resource-statYaYa
/api/v1/streamsYaYa (channel online dengan URL RTSP)
/api/v1/recordings, .../daily, .../hourlyYaYa
/api/v1/playbacks/{path}YaYa (download memakai ISAPI native)
/api/v1/play/ts/{path}YaYa
/api/v1/monitor/*YaYa (tanpa proses ingest)
/api/v1/devices/*YaTidak
/api/v1/clients/*YaTidak
DELETE /api/v1/recordings/{path}YaTidak
/api/v1/retention/*YaTidak
/api/v1/videos/*YaTidak
/api/v1/broadcast/*, /ws/v1/broadcast/*YaTidak
/api/v1/registerYaTidak
/api/v1/hikv/channels, /api/v1/hikv/channels/statusTidakYa

Cara Kerja

  • Penemuan rekaman menanyakan ISAPI untuk rekaman dalam setahun terakhir; hanya channel yang benar-benar punya rekaman yang dicantumkan. live diambil dari status online channel, record dari 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=true berlaku untuk channel HEVC.

Hubungan dengan Tipe Server hikvision di Lenz

Lenz memiliki dua cara menjangkau NVR Hikvision:

  1. Langsung, dengan mendaftarkan Media Server bertipe hikvision. Lenz berbicara dengan NVR sendiri; fitur terbatas pada Recorded Streams dan Playback.
  2. Lewat Liodra backend Hikvision, dengan mendaftarkan Liodra sebagai Media Server bertipe srs yang menunjuk ke port 9080 container 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 menjawab 404.

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

On this page