Skip to content

Структура хранения видеоархива и файлов на диске ​

RUSEON Core организует видеоархив в изолированных каталогах по каждой камере. Эта схема обеспечивает высокую скорость индексации, надежное восстановление после сбоев и эффективную очистку по сроку хранения.


1. Иерархия каталогов ​

Все видеозаписи сохраняются в корневой каталог recordings/:

text
recordings/
├── cam-entrance-01/
│   ├── 2026-08-23_14-00-00_to_15-00-00.mp4
│   ├── 2026-08-23_15-00-00_to_16-00-00.mp4
│   └── 2026-08-23_16-00-00_ongoing.mp4
└── cam-warehouse-02/
    ├── 2026-08-23_14-00-00_to_15-00-00.mp4
    └── 2026-08-23_15-00-00_ongoing.mp4

2. Спецификация путей и имен файлов ​

ЭлементФорматОписаниеПример
Кореньrecordings/Базовый каталог архива./recordings
Папка камеры{camera_id}/Каталог конкретной камерыcam-entrance-01/
Текущая запись{start}_ongoing.mp4Файл, в который пишутся новые фрагменты fMP42026-08-23_16-00-00_ongoing.mp4
Завершенный файл{start}_to_{end}.mp4Часовой завершенный файл fMP42026-08-23_14-00-00_to_15-00-00.mp4
Сбойный файл{start}.corruptedФайл с ошибкой записи2026-08-23_14-00-00.corrupted

3. Индексация в оперативной памяти (IndexLRUCache) ​

  • Отсутствие привязки к БД: Интервалы архива (GET /api/cameras/:id/archive) определяются напрямую сканированием папки камеры через internal/archive/indexer.go.
  • LRU-кеш (IndexLRUCache): Смещения боксов moof + mdat считываются из файлов и кешируются в памяти (емкость: 2 000 файлов).
  • Прямой экспорт MP4: Функция ExportMP4 копирует заголовок ftyp + moov и выбранные части видео напрямую в HTTP-ответ без перекодирования.

4. Опции монтирования в Linux ​

bash
# Рекомендуемые опции в /etc/fstab для дисков архива
UUID=... /app/recordings ext4 noatime,nodiratime,data=ordered 0 2

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

Released under the MIT License.