Как сохранить записи телепередач для nPVR¶
Одно из важнейших отличий IPTV OTT сервиса от линейного ТВ — доступ к архиву передач. В этой статье описывается, как обеспечить сохранение телепередач, которые клиент отложил на длительное хранение. При этом оставшаяся ненужная часть архива должна удалиться за ненадобностью и очистить место на диске.
До 2023 года мы предлагали для решения этой задачи механизм DVR locks, но от него отказались из-за того, что он очень плохо масштабируется и ещё хуже подлежит резервированию.
В этом документе не рассматривается задача обеспечения прозрачного доступа к телепередачам при переносе архива с горячего хранилища в холодное в виде отдельных видеофайлов. Этой расширенной задачей занимается Flussonic Central, рекомендуется пользоваться им. Здесь описывается базовый способ с одним лишь Media Server.
Организационно-правовой вопрос¶
В некоторых странах запись архива оператором может быть или запрещена, или требовать отдельного согласования/регулирования.
При этом запись передачи на приставку для личных абонента, как правило, допускается. Запись на приставку является ощутимым удорожанием сервиса, ведь нужно каждому абоненту продать более дорогое устройство, в котором появляется дополнительная изнашивающаяся деталь.
nPVR (network Personal Video Recorder) является неплохим выходом из этой ситуации: абонент заказывает запись передачи, а она ему сохраняется на сервере и хранится по его запросу.
Схема решения¶
- Сервер клиента должен получать EPG и сохранять телепередачи в базу в виде отдельных записей.
- На основании пожеланий подписчиков, сервер клиента должен помечать востребованные нужные телепередачи, как защищенные от стирания.
- Media Server будет для каждого потока регулярно запрашивать с сервера клиента список эпизодов, которые надо оставить в архиве.
- Если в качестве этого списка эпизодов отдавать телепередачи, то они будут сохраняться в архиве пока хватит места на дисках.
Взаимодействие Media Server и сервера клиента¶
Для того, чтобы включился механизм опроса эпизодов, сервер клиента должен:
- Для работы эпизодов, Media Server должен использовать систему управления потоками config_external.
- В ответе со списком потоков надо отдать заголовок X-Config-Server-Episodes. Увидев этот заголовок, 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.