Skip to content

Архив DVR

Архив превращает канал из «только прямой эфир» в nPVR: зритель отматывает назад, догоняет начало передачи, смотрит вчерашний выпуск. Запись ведёт стример, на котором работает канал; эта страница готовит диски, включает запись и показывает, как убедиться, что архив действительно пишется и играется.

Подготовьте диски стримера

Хранилище архива — настройка стримера, а не канала. Откройте стример из реестра, блок DVR в его настройках:

  • Корень архива — каталог, в который смонтированы диски архива.
  • Диски — по одному на физическое устройство: дочерние каталоги корня.
  • Проверять монтирование перед записью — включено по умолчанию: каталог без собственного монтирования репортится как «не смонтирован», а писать архив на раздел системного корня стример отказывается — это верный способ уронить машину вместе с архивом. Выключайте только осознанно.

Диски собираются так: смонтируйте каждый диск дочерним каталогом одного общего каталога — /storage/dvr/disk1, /storage/dvr/disk2, /storage/dvr/disk3, — укажите общий каталог как Корень архива и внесите каждый диск в список дисков как его дочерний каталог:

Настройки стримера: корень архива и диски под ним

Нажмите Сохранить изменения — central доставит хранилище стримеру, индикаторы применения покажут, когда оно вступило в силу. Без настроенного хранилища запись не начнётся, сколько бы каналов её ни попросили.

Локальный стример одномашинной инсталляции — не исключение: он открывается из того же реестра, и его хранилище настраивается тем же блоком DVR в консоли.

JBOD вместо RAID

Архивная подсистема Catena — это application RAID: стример сам раскладывает запись по независимым устройствам, сам замечает выпавший диск и продолжает писать на оставшиеся. Поэтому диски отдаются ему по отдельности — JBOD: у каждого своя файловая система и своя точка монтирования, как в сборке выше. Потеря диска стоит ровно его доли архива: остальные диски продолжают писать, а в реестре стримеров краснеет индикатор DVR.

Аппаратный и программный RAID под архивом мы не рекомендуем — и обещаем, что с этими инженерными решениями вы столкнётесь с проблемами. Запись архива — непрерывный поток на все каналы машины сразу, и под такой нагрузкой массив ведёт себя хуже суммы своих дисков: деградация или ребилд одного диска тормозит массив целиком, и задержки с пропусками записи растут у всех каналов одновременно. Ровно так перегруз архива и выглядит на графике записи вкладки DVR: кривые пропусков и задержек поднимаются у всех каналов машины разом.

Включите запись

На странице канала откройте вкладку DVR:

  • Писать в DVR — включает запись.
  • Глубина хранения (часы) — сколько часов эфира держать; вышедшее за глубину стирается само.
  • Макс. размер (байты) — потолок по месту на диске. Работают оба лимита сразу: что наступит раньше, то и подрежет архив.

Нажмите Сохранить. Через минуту-другую на этой же вкладке появится Текущее состояние записи: индикатор с вердиктом и окно архива — от начала записи до текущего момента. Когда стример отдаёт расширенную статистику, здесь же показываются часы с данными (с дырами, если запись прерывалась), размер архива, живые скорости записи и график записи — история этих скоростей вместе с ошибками и пропусками.

Вкладка DVR: настройки и текущее состояние записи

Следите за записью

В списке каналов у канала с архивом колонка DVR показывает, сколько фактически записано, и светофор:

  • Зелёный — запись идёт, ошибок нет.
  • Жёлтый — запись деградирована (фрагменты пишутся с задержкой или пропусками) либо DVR настроен, но запись не идёт.
  • Красный — ошибки записи: данные теряются прямо сейчас.
  • Прочерк — архив у канала не настроен.

Список каналов: колонка DVR со светофором записи

Здоровье дисков — на стороне стримера: если диск отваливается или заполняется, краснеет индикатор DVR в реестре стримеров.

Что получает зритель

Архив отдаётся теми же HLS-адресами, что и прямой эфир, — плееру не нужно ничего особенного:

  • Отмотка назад: /streaming/v/<имя>/rewind/<секунды>/index.m3u8 — тот же канал, сдвинутый в прошлое на указанное число секунд. rewind/3600 — час назад.
  • Диапазоны записи: /streaming/dvr-ranges/<имя> — JSON со списком записанных интервалов. На нём строится шкала архива в плеере: видно, что записано, а где дыра.
  • Превью-клип: /streaming/dvr-preview-mp4/<имя>/<utc_ms> — короткий MP4 вокруг момента времени (UTC в миллисекундах). Удобен монтажным и модераторским интерфейсам: показать кусочек архива, не поднимая плеер. Собирается из миниатюр, записанных в архив, — настройте превью с включённым «Хранить превью в DVR», иначе адрес ответит, что кадров нет.

Если запись не идёт

  • «DVR настроен, но запись не идёт». Либо канал не в эфире — писать нечего, — либо у стримера не настроено хранилище архива. Проверьте статус канала и блок DVR в настройках стримера.
  • «Ошибки записи — данные теряются». Диск полон, отвалился или не смонтирован. Смотрите индикатор DVR и настройки дисков в реестре стримеров.
  • Окно архива короче глубины хранения. Это нормально сразу после включения: окно растёт по мере записи и упрётся в глубину только через заданное число часов.