Предотвращение повреждения MP4 при сбоях питания
Критическая уязвимость классических систем видеонаблюдения — повреждение незавершённых файлов MP4. При внезапном отключении питания, сбое ядра или аварийном перезапуске контейнера часы записанного видео могут оказаться безвозвратно испорченными.
1. Причина повреждения стандартных файлов MP4
В классическом формате контейнера ISO Base Media File Format (MP4):
- Видео- и аудиоданные записываются в бокс
mdat. - Индекс, таймкоды и смещения кадров записываются в бокс
moov(movie atom).
В обычных регистраторах:
- Видеопоток непрерывно пишется в
mdat. - Бокс
moovрассчитывается в оперативной памяти и записывается в файл только при штатной остановке записи. - Аварийный сценарий: При сбое питания бокс
moovне успевает записаться на диск. Плееры (VLC, Chrome) выдают ошибкуфайл повреждён.
2. Решение: Архитектура Fragmented 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:
- Самоописываемые фрагменты: Файл разбит на независимые блоки. Каждый блок содержит заголовок
moof, описывающий только свои видеоданныеmdat. - Мгновенная читаемость: При внезапном отключении питания все завершённые фрагменты уже полностью проиндексированы на накопителе.
- Нулевые потери данных: Файл открывается в любом плеере вплоть до последней секунды перед аварией без сторонних утилит восстановления.
3. Таймшифт без дублирования файлов на диске
В RUSEON Core файлы fMP4 используются напрямую для мгновенного таймшифта в веб-интерфейсе:
- При перемотке видео по таймлайну RUSEON читает атомы
fMP4и на лету генерирует сегменты HLS в оперативной памяти. - Это устраняет необходимость хранения дублирующих файлов HLS на диске, экономя до 50% дискового бюджета.