Структура хранения видеоархива и файлов на диске
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.mp42. Спецификация путей и имен файлов
| Элемент | Формат | Описание | Пример |
|---|---|---|---|
| Корень | recordings/ | Базовый каталог архива | ./recordings |
| Папка камеры | {camera_id}/ | Каталог конкретной камеры | cam-entrance-01/ |
| Текущая запись | {start}_ongoing.mp4 | Файл, в который пишутся новые фрагменты fMP4 | 2026-08-23_16-00-00_ongoing.mp4 |
| Завершенный файл | {start}_to_{end}.mp4 | Часовой завершенный файл fMP4 | 2026-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