Skip to content

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"

Связанная документация ​

Released under the MIT License.