Nodeflux Central
Video Management

Video Management

Kelola video yang diunggah ke Media Server — pratinjau, restart device, hapus, dan kontrol streaming per video dari satu halaman terpusat.

Pengenalan

Halaman Video Management (/video-management) adalah antarmuka untuk mengelola video yang telah diunggah ke Media Server (Lyodra/Visionaire Media). Di sini Anda dapat melihat daftar video, memantau status streaming setiap file, melakukan restart atau stop device yang menayangkan video, serta menghapus video yang tidak lagi dibutuhkan.

Perbedaan dengan halaman Streams: Halaman Streams (/streams) digunakan untuk mengelola stream kamera CCTV langsung (RTSP/RTMP) beserta assignment analitik AI secara bulk — enable, disable, atau hapus banyak stream sekaligus. Halaman Video Management khusus untuk mengelola file video yang diunggah ke Media Server: file rekaman, video uji coba, atau footage historis yang diputar ulang sebagai stream oleh Lyodra.

Halaman ini dilindungi RBAC dengan resource video_management. Pastikan Anda memiliki permission yang sesuai; jika menu tidak muncul, hubungi administrator sistem.


Cara Menggunakan

Mengunggah Video

Pilih Media Server

Di bagian atas halaman, pilih Media Server yang menjadi tujuan upload melalui dropdown Media Server. Sistem akan mengingat pilihan terakhir Anda menggunakan penyimpanan lokal browser — Anda tidak perlu memilih ulang setiap kali membuka halaman.

Seret atau pilih file video

Di area unggah, seret file video ke zona drop atau klik untuk membuka dialog pemilihan file. Format yang didukung tergantung konfigurasi Media Server; resolusi maksimum yang diizinkan adalah 2K (lebar piksel sesuai batas server).

Jika file yang sama sudah ada di server, sistem akan menampilkan dialog konfirmasi duplikat dengan tiga pilihan penanganan: Timpa (replace), Ubah Nama (rename), atau Lewati (skip).

Atur waktu rekaman

Sebelum memulai unggah, Anda dapat mengatur Waktu Mulai rekaman video. Sistem akan mencoba mengekstrak timestamp secara otomatis dari metadata file (tag Recorded_Date, Encoded_Date, nama file, dll.). Jika tersedia Gemini API Key, ekstraksi timestamp berbasis AI dari frame video juga dapat diaktifkan.

Untuk mengatur secara manual, pilih opsi Manual dan masukkan waktu rekaman pada kolom yang tersedia.

Mulai unggah

Klik Mulai Unggah (satu file) atau Mulai Unggah Semua File (beberapa file). Proses unggah menggunakan mekanisme chunked upload dengan dukungan resume — jika koneksi terputus, Anda dapat melanjutkan unggah yang terhenti tanpa mengirim ulang dari awal.

Jangan berpindah halaman atau menutup jendela browser selama proses unggah berlangsung.


Mengelola Video yang Sudah Diunggah

Setelah video diunggah, video akan muncul di tabel di bawah area unggah. Tabel mendukung pencarian berdasarkan nama file, pengurutan berdasarkan kolom, dan paginasi.

Restart Device

Temukan video yang ingin di-restart

Gunakan kolom pencarian atau urutkan tabel berdasarkan kolom Status untuk menemukan video yang statusnya bermasalah (stopped atau tidak responsif).

Klik tombol Restart

Pada baris video yang bersangkutan, klik ikon Restart Device (ikon refresh). Aksi ini akan menghentikan lalu memulai ulang proses FFmpeg yang menayangkan video tersebut di Media Server.

Verifikasi status

Setelah beberapa detik, tabel akan diperbarui secara otomatis. Status video yang berhasil di-restart akan berubah menjadi streaming.

Stop Device

Klik ikon Stop Device pada baris video yang ingin dihentikan. Sistem akan menampilkan dialog konfirmasi karena menghentikan device akan mengganggu semua stream yang bergantung padanya. Konfirmasi dengan klik Saya mengerti, lanjutkan.

Hapus Video

Klik ikon Hapus pada baris video yang ingin dihapus. Sistem akan menampilkan dialog konfirmasi. Setelah dikonfirmasi, video akan dihapus dari Media Server secara permanen.

Pratinjau Video

Klik ikon Pratinjau untuk membuka dialog pratinjau video. Dialog menampilkan player video (hingga 10 detik), informasi file, informasi device, URL RTSP stream, dan sesi RTSP aktif (publishing/playing).


Fitur Utama

Chunked Upload dengan Resume

Video diunggah dalam potongan (chunk) sehingga unggah yang terputus dapat dilanjutkan tanpa memulai dari awal. Cocok untuk file berukuran besar di jaringan tidak stabil.

Ekstraksi Timestamp Otomatis

Sistem mengekstrak waktu rekaman dari metadata video secara otomatis (Recorded_Date, Encoded_Date, nama file). Didukung juga ekstraksi berbasis AI menggunakan Gemini jika dikonfigurasi.

Kontrol Streaming per Video

Setiap video yang diunggah dijalankan sebagai device oleh Media Server. Anda dapat me-restart atau menghentikan proses streaming tanpa mempengaruhi video lain.

Manajemen Duplikat

Saat mengunggah file dengan nama yang sama, sistem mendeteksi duplikat dan meminta konfirmasi: timpa file lama, ubah nama file baru, atau lewati file duplikat.

Pratinjau RTSP In-Browser

Lihat pratinjau stream RTSP langsung di browser dan akses informasi sesi aktif — siapa yang sedang mengonsumsi stream — melalui panel RTSP Sessions.

Paginasi dan Pengurutan Server-side

Tabel mendukung pengurutan berdasarkan nama file, ukuran, durasi, waktu mulai, dan waktu unggah, serta paginasi yang diproses di sisi server untuk performa optimal.


API Reference

Video Management API

Semua endpoint video dirutekan melalui proxy Media Server di Raisa Gateway menggunakan path prefix {nvrServerId}.

Daftar Video

GET /api/visionaire-media/{nvrServerId}/videos
GET /api/visionaire-media/{nvrServerId}/videos

Query Parameters:

Prop

Type

Contoh respons:

Response: 200 OK
{
  "success": true,
  "data": {
    "videos": [
      {
        "id": "abc123",
        "original_filename": "rekaman-2026-01.mp4",
        "file_path": "/storage/videos/rekaman-2026-01.mp4",
        "file_size": 104857600,
        "created_at": "2026-01-15T08:00:00Z",
        "status": "streaming",
        "duration": 3600,
        "started_at": "2026-01-15T00:00:00Z"
      }
    ],
    "count": 1,
    "pagination": {
      "current_page": 1,
      "per_page": 10,
      "total_items": 1,
      "total_pages": 1
    }
  }
}

Detail Video

GET /api/visionaire-media/{nvrServerId}/videos/{videoId}
GET /api/visionaire-media/{nvrServerId}/videos/{videoId}

Hapus Video

DELETE /api/visionaire-media/{nvrServerId}/videos/{videoId}
DELETE /api/visionaire-media/{nvrServerId}/videos/{videoId}

Respons sukses:

Response: 200 OK
{
  "success": true,
  "message": "Video deleted successfully",
  "video_id": "abc123"
}

Unggah Chunk

POST /api/visionaire-media/{nvrServerId}/videos/upload?autoplay={true|false}
POST /api/visionaire-media/{nvrServerId}/videos/upload
Content-Type: multipart/form-data

Form fields:

Prop

Type


Status Upload

GET /api/visionaire-media/{nvrServerId}/videos/upload/status/{sessionId}
GET /api/visionaire-media/{nvrServerId}/videos/upload/status/{sessionId}

Resume Upload

GET /api/visionaire-media/{nvrServerId}/videos/upload/resume/{sessionId}
GET /api/visionaire-media/{nvrServerId}/videos/upload/resume/{sessionId}

Query parameters opsional: filename, video_id


Batalkan Upload

POST /api/visionaire-media/{nvrServerId}/videos/upload/cancel/{sessionId}
POST /api/visionaire-media/{nvrServerId}/videos/upload/cancel/{sessionId}

Pause dan Resume Streaming Video

POST /api/visionaire-media/{nvrServerId}/videos/{videoId}/pause
POST /api/visionaire-media/{nvrServerId}/videos/{videoId}/pause
POST /api/visionaire-media/{nvrServerId}/videos/{videoId}/resume

Respons:

Response: 200 OK
{
  "message": "Video paused",
  "video_id": "abc123",
  "status": "paused"
}

Perbarui Metadata Video

PATCH /api/visionaire-media/{nvrServerId}/videos/{videoId}
PATCH /api/visionaire-media/{nvrServerId}/videos/{videoId}
Content-Type: application/json

Request body:

Prop

Type


Device API (Restart Pipeline)

Restart dan stop device video dilakukan melalui endpoint Device pada Media Server API. Setiap video yang diunggah direpresentasikan sebagai device dengan skema file.

Restart Device

POST /api/visionaire-media/{nvrServerId}/devices/{scheme}/{path}/restart
POST /api/visionaire-media/{nvrServerId}/devices/{scheme}/{path}/restart

Menghentikan dan memulai ulang proses FFmpeg untuk device yang menayangkan video. Gunakan saat video tidak responsif atau statusnya stopped tanpa sebab jelas.

Path parameters:

Prop

Type

Respons:

Response: 200 OK
{
  "message": "Device restarted successfully"
}

Stop Device

POST /api/visionaire-media/{nvrServerId}/devices/{scheme}/{path}/stop
POST /api/visionaire-media/{nvrServerId}/devices/{scheme}/{path}/stop

Menghentikan proses streaming device tanpa menghapusnya dari sistem.


Ekstraksi Timestamp AI (Opsional)

POST /api/llm/frame-timestamp-extraction
POST /api/llm/frame-timestamp-extraction
Content-Type: multipart/form-data

Prop

Type

Respons:

Response: 200 OK
{
  "ok": true,
  "message": "Timestamp extracted",
  "data": {
    "timestamp": "15-01-2026T08:00:00",
    "found": true,
    "confidence": 0.97
  }
}

Tips & Troubleshooting


API Reference


Selanjutnya

On this page