Skip to content

Как сохранить записи телепередач для nPVR

Одно из важнейших отличий IPTV OTT сервиса от линейного ТВ — доступ к архиву передач. В этой статье описывается, как обеспечить сохранение телепередач, которые клиент отложил на длительное хранение. При этом оставшаяся ненужная часть архива должна удалиться за ненадобностью и очистить место на диске.

До 2023 года мы предлагали для решения этой задачи механизм DVR locks, но от него отказались из-за того, что он очень плохо масштабируется и ещё хуже подлежит резервированию.

В этом документе не рассматривается задача обеспечения прозрачного доступа к телепередачам при переносе архива с горячего хранилища в холодное в виде отдельных видеофайлов. Этой расширенной задачей занимается Flussonic Central, рекомендуется пользоваться им. Здесь описывается базовый способ с одним лишь Media Server.

Организационно-правовой вопрос

В некоторых странах запись архива оператором может быть или запрещена, или требовать отдельного согласования/регулирования.

При этом запись передачи на приставку для личных абонента, как правило, допускается. Запись на приставку является ощутимым удорожанием сервиса, ведь нужно каждому абоненту продать более дорогое устройство, в котором появляется дополнительная изнашивающаяся деталь.

nPVR (network Personal Video Recorder) является неплохим выходом из этой ситуации: абонент заказывает запись передачи, а она ему сохраняется на сервере и хранится по его запросу.

Схема решения

  • Сервер клиента должен получать EPG и сохранять телепередачи в базу в виде отдельных записей.
  • На основании пожеланий подписчиков, сервер клиента должен помечать востребованные нужные телепередачи, как защищенные от стирания.
  • Media Server будет для каждого потока регулярно запрашивать с сервера клиента список эпизодов, которые надо оставить в архиве.
  • Если в качестве этого списка эпизодов отдавать телепередачи, то они будут сохраняться в архиве пока хватит места на дисках.

Взаимодействие Media Server и сервера клиента

Для того, чтобы включился механизм опроса эпизодов, сервер клиента должен:

В методе external_episodes_list очень важно обратить внимание на параметр media со списком запрашиваемых потоков. Отсутствие данных по потоку в ответе означает стирание всего архива для этого потока. Т.е. возврат пустого списка означает стирание архива со всех потоков, которые были перечислены в параметре media

В этом ответе допустимо вернуть код 400 или 500, если по какой-то причине готового ответа со списком эпизодов нет.

Как это будет работать?

  • На Media Server настроен архив потока с глубиной, например, в 3 дня непрерывного архива.
  • Все настройки пришли через config_external с сервера, отдающего сигнальный заголовок X-Config-Server-Episodes: true.
  • На основании этого раз в какое-то время Media Server делает запрос к external_episodes_list, опрашивая диапазоны, которые планируются к очистке.
  • Те фрагменты архива, которые покрыты эпизодами, остаются на месте, остальные удаляются.

Выгрузка записей в виде файлов

В случае, когда требуется долгосрочное хранение с редким обращением, имеет смысл выгрузить фрагменты архива в виде файлов в отдельное внешнее хранилище.

Этой задачей занимается Flussonic Central.