REST API: Эндпоинты видеоархива и воспроизведения
API архива обеспечивает доступ к записанным видеофайлам fMP4, таймлайну доступности, on-demand HLS стримингу и скачиванию MP4-клипов.
1. Запрос интервалов архива (GET /api/cameras/:id/archive)
Сканирует каталог камеры и возвращает список доступных отрезков fMP4:
- Требуемая роль:
viewer,operatorилиadmin
bash
curl -H "Authorization: Bearer <TOKEN>" http://localhost:8080/api/cameras/cam-01/archiveОтвет (200 OK):
json
[
{
"start": "2026-08-23T14:00:00Z",
"end": "2026-08-23T15:00:00Z",
"filename": "2026-08-23_14-00-00_to_15-00-00.mp4"
},
{
"start": "2026-08-23T15:00:00Z",
"end": "2026-08-23T15:45:12Z",
"filename": "2026-08-23_15-00-00_ongoing.mp4"
}
]2. On-Demand HLS манифест архива (GET /hls/:id/archive.m3u8)
Генерация плейлиста HLS для конкретного файла архива:
bash
curl "http://localhost:8080/hls/cam-01/archive.m3u8?file=2026-08-23_14-00-00_to_15-00-00.mp4"Сервер динамически парсит структуру fMP4 (internal/archive/hls.go) и отдает M3U8 манифест со ссылками на сегменты GET /hls/:id/segment.ts?file=...&seq=0.
3. Экспорт видео в MP4 (GET /api/cameras/:id/export)
Прямой стриминг выбранных фрагментов fMP4 в единый файл MP4 без перекодирования:
- Параметры запроса:
file(строка, обязательно): Имя файла в каталоге камерыstart_seq(целое, опционально, по умолчанию0): Начальный индекс частиend_seq(целое, опционально, по умолчанию до конца): Конечный индекс части
bash
curl -H "Authorization: Bearer <TOKEN>" \
"http://localhost:8080/api/cameras/cam-01/export?file=2026-08-23_14-00-00_to_15-00-00.mp4&start_seq=0&end_seq=10" \
-o exported_clip.mp4Заголовки ответа:
http
HTTP/1.1 200 OK
Content-Type: video/mp4
Content-Disposition: attachment; filename="export_cam-01.mp4"