Skip to content

Защита от повреждения MP4 при сбое питания и аварийной перезагрузке

Критическая уязвимость классических систем видеонаблюдения — повреждение незавершенных MP4 файлов. Если видеосервер внезапно обесточивается или аварийно перезагружается, часы записанного видеоархива оказываются безвозвратно испорченными.


🔍 Почему ломаются стандартные MP4-файлы

В классическом формате контейнера MP4 (ISO Base Media File Format):

  • Видео- и аудиопотоки записываются в атомы mdat.
  • Индекс, таймкоды кадров и смещения записываются в служебный атом moov.

В обычных рекордерах:

  1. При записи видеопоток непрерывно пишется в mdat.
  2. Индекс moov рассчитывается в оперативной памяти и записывается на диск только в момент корректной остановки записи.
  3. Авария: Если выключилось питание или упал процесс, атом moov не успевает записаться. Видеоплееры (VLC, браузеры) не могут найти индекс и выдают ошибку: битый файл или неподдерживаемый формат.

✅ Архитектурное решение: Фрагментированный MP4 (fMP4)

RUSEON Core выполняет запись исключительно в формате Fragmented MP4 (fMP4):

text
[ ftyp ] [ moov (Инициализация) ]
[ moof #1 ] [ mdat #1 ] -> 2-секундный фрагмент
[ moof #2 ] [ mdat #2 ] -> 2-секундный фрагмент
[ moof #3 ] [ mdat #3 ] -> 2-секундный фрагмент (Сбой питания тут!)

Преимущества fMP4:

  1. Автономные фрагменты: Файл разбит на короткие независимые блоки. Каждый блок содержит локальный заголовок moof, описывающий только свои 2 секунды видео.
  2. Мгновенная читаемость: Если сервер обесточен прямо во время записи, все ранее записанные фрагменты уже полностью проиндексированы на диске.
  3. Нулевая потеря данных: Файл открывается в любом современном плеере с точностью до последней миллисекунды перед падением, без необходимости использовать утилиты восстановления.

🚀 Нативный таймшифт без дублирования файлов на диске

В RUSEON Core эти же fMP4 файлы используются для моментального воспроизведения таймшифта в веб-интерфейсе:

  • При перемотке архива в браузере RUSEON на лету генерирует HLS-сегменты прямо из fMP4 в оперативной памяти.
  • Это устраняет необходимость хранить на диске дублирующие .ts файлы HLS, экономя до 50% объема дискового пространства.

Released under the MIT License.