VMS — frontend test

Camera → MediaMTX → recording / live / playback. Thời gian hiển thị theo múi giờ trình duyệt; API nhận Unix milliseconds.

Swagger backend ↗ Đang kết nối…

Cấu hình và địa chỉ server

1. Camera

ID / stream pathTênRTSP sourceRTSP restreamTrạng thái DBThao tác

Thêm camera

Camera luôn ingest và ghi hình. RTSP restream là URL đã lưu trong DB, backend tự tạo từ MEDIAMTX_RTSP_URL + ID camera. Đồng bộ MediaMTX chạy nền. Xoá camera đã có event sẽ bị backend từ chối (409).

2. Live, playback và recording

Chưa chọn camera.

MediaMTX: runtime, cấu hình path và HLS muxer (chỉ đọc)
Đã dừng
Timeline 10 phút gần nhất Có recordingXám: không có recording
−10 phútLIVE

Tự mở live khi chọn camera. Bấm/kéo trên vùng xanh để xem lại recording.

Frame timestamp: chưa có

Kéo timeline để chọn mốc trong 10 phút gần nhất; bấm LIVE để về trực tiếp. Timeline và coverage tự cập nhật mỗi 5 giây. Playback dùng MP4 và tự chuyển tiếp sang khoảng còn recording tiếp theo.

Các khoảng còn recording

Chưa chọn chunk.

Xoá toàn bộ chunk thuộc các khoảng được chọn, không cắt một phần file. Các chunk mới ghi thêm sẽ không tự được chọn. Camera vẫn tiếp tục ghi hình.

ChọnBắt đầuKết thúcSố giâyChunks

File trên ổ đĩa local

Đọc trực tiếp thư mục recordings/ đã mount; chỉ xem/tải. File đang ghi có thể chưa phát được. Khi dùng MediaMTX ở máy khác, danh sách local không phản ánh ổ đĩa máy đó.

Đường dẫnKích thướcModified

3. Event request

Event được lưu trước, worker Celery xuất MP4 [t−3s, t+3s] và upload vào MINIO_BUCKET. Cần bật worker bằng uv run python -m app.worker_main. Path gửi lên chỉ là object key, không kèm bucket.

Giờ máy chỉ tiện nhập test; event thật phải lấy timestamp frame trên timeline restream MediaMTX. Live đọc HLS Program Date Time nếu có; playback ước tính từ mốc bắt đầu + currentTime.

Gửi nguyên JSON IVA (metadata + events)

metadata.source_id phải trùng ID camera trong DB; metadata.video_save_path nằm ngang với frame_path. ID job được tạo theo cách của recorder cũ.

Kết quả gửi event (created=false nghĩa là ID đã tồn tại)
Chưa gửi.
IDCameraTimestampVideo save path
Chọn “Chi tiết” để xem event và job.

4. Event đã xử lý

Các event đã xuất clip và upload thành công (ready), được lưu trong DB. Video và ảnh đọc từ MinIO, độc lập với TTL recording 10 phút. Danh sách tự cập nhật mỗi 5 giây.

Request IDCameraThời gian eventVideo save path

Chi tiết event

Video event

Ảnh sự kiện

Bấm ảnh để mở kích thước gốc. Liên kết MinIO có hạn 20 phút; bấm “Làm mới liên kết” nếu hết hạn.

5. Jobs

Job của các event trên trang hiện tại; ID job trùng ID event. Chưa có API retry/cancel hay danh sách job độc lập.

IDStatusCreated atAttemptsLast note

Request log