Интеграция с IPTV middleware

Важно

Бета-версия 2.1. Описанное здесь есть только в бета-версии 2.1: она ставится из бета-репозитория и только с лицензией, в стабильной версии 2.0.2 и в демоверсии этого нет. Бета-версия поставляется без гарантий, поддержка — по возможности (Программа бета-тестирования).

С версии 2.1.1.516 узел понимает схему адресов и авторизации по токену, с которой IPTV middleware и плееры уже работают с потоковыми серверами: Ministra (Stalker), Microimpuls Smarty, TVIP TMS и плееры с архивом catchup="flussonic". Такой middleware можно направить на Perfect Streamer, не меняя в нём шаблоны адресов каналов: middleware выдаёт абоненту ссылку с токеном, а узел проверяет токен у middleware.

Включаются две вещи: формы адресов на потоковом HTTP-сервере и сервер проверки токенов (Сервер проверки токенов). Обе настраиваются в консоли, а также в файле настроек (Изменение параметра) и через HTTP API (Управление через HTTP API).

Адреса каналов

Переключатель «Flussonic-совместимые URL» в разделе «Middleware» экрана «Потоковый HTTP-сервер» (Потоковый HTTP-сервер; ключ flussonic-urls в /config/http-server), по умолчанию выключен. Когда он включён, каждый поток с заданным «Именем потока в URL» (URL и авторизация) доступен и по этим адресам, рядом с прежними:

Адрес

Что отдаёт

/<имя>/index.m3u8, /<имя>/mono.m3u8

прямой эфир HLS

/<имя>/index.mpd

прямой эфир DASH

/<имя>/mpegts

прямой эфир MPEG-TS; у потока должна быть включена раздача по HTTP

/<имя>/index-<начало>-<длительность>.m3u8, archive-…, mono-… (и index-…, archive-… с .mpd)

архив DVR (DVR: архив потока) с момента <начало> (время Unix в секундах) длительностью <длительность> секунд, до 31 суток, или now — до текущего момента

/<имя>/timeshift_abs-<начало>.m3u8, /<имя>/timeshift_rel-<секунд>.m3u8

timeshift: архив с прошлого момента (или <секунд> назад), который дальше идёт как прямой эфир

Полный адрес — http://<узел>:<порт>/<имя>/index.m3u8?token=<токен>. Каждый запрос должен нести токен (не длиннее 512 символов). Имя адаптивного набора (Адаптивные наборы) даёт его адаптивный плейлист. Если архив или timeshift запрошен с момента, когда запись ещё не шла, master-плейлист отвечает 200, а плейлист варианта (media) — 404.

Именами hls, dash, llhls, http, rsv и именами из 17 символов вида h и 16 шестнадцатеричных цифр поток в этих адресах называть нельзя. В редакторе потока, на вкладке «OTT», под «Именем потока в URL» консоль показывает эти адреса с именем потока, а для такого имени — предупреждение (Настроить поток).

Сервер проверки токенов

Токен проверяет middleware. Его адрес задаётся сервером на вкладке «Внешние (биллинг)» экрана «Пользователи / Логины» (Пользователи / Логины; запись в /config/cs/server). В поле «Коннектор» выбирается один из серверов токенов:

ministra — «Ministra / Stalker (токен)»

Ministra (Stalker). Адрес — http://<портал>/stalker_portal/server/api/chk_flussonic_tmp_link.php. В Ministra у канала задаётся тип временной ссылки Flussonic, тип архива Flussonic DVR и адрес архива http://<узел>:<порт>/<имя>/index.m3u8.

smarty — «Smarty (токен)»

Microimpuls Smarty. Адрес — http://<smarty>/tvmiddleware/api/streamservice/token/check/. Маска потока — /$prefix/index.m3u8?token=$token, маска архива — /$prefix/index-$flpbt-$flpdur.m3u8?token=$token.

flussonic — «Flussonic auth backend (токен)»

Любой другой middleware (например, TVIP TMS), который проверяет токены по тому же протоколу. Адрес — его адрес проверки.

Сервер токенов проверяет только токены этих адресов; вход по логину и паролю он не обслуживает. Поэтому у него в консоли задаются только «Имя», «URL», «Таймаут (с)» и раздел «Сервер токенов», а пароль, учёт сессий, префикс и суффикс логина, трассировка и разбор ответа скрыты. Ключ password узел требует, но таким серверам не передаёт: консоль заполняет его сама. Если сервер токенов переводят на «Универсальный (HTTP)», консоль просит ввести настоящий пароль. При записи через API password задаётся любым непустым значением.

Доступ и повторные проверки

  • Без токена — отказ. Запрос без токена, с отклонённым токеном или когда сервер проверки недоступен получает ответ 403. Если сервер не ответил или ответил ошибкой, спрашивается следующий; отказ (401 или 403) — окончательный.

  • Middleware недоступен. С флажком «Пускать, пока бэкенд недоступен» (auth-fail-open = true) новые зрители впускаются, пока недоступны все серверы проверки, и проверяются снова в течение 30 с. Отказ middleware этот ключ не отменяет.

  • Повторная проверка. Идущая сессия проверяется снова с периодом, который задаёт middleware (заголовок ответа X-AuthDuration, по умолчанию 180 с), или с периодом, заданным в поле «Повторная проверка»: «По профилю», «Никогда» или «Каждые N секунд» (ключ auth-recheck: -1, 0 или число секунд до 86400). Отказ при повторной проверке останавливает просмотр этого зрителя. Ссылки Ministra повторно не проверяются: они живут несколько секунд.

  • Сессии на пользователя. Заголовки ответа X-Max-Sessions и X-UserId ограничивают число сессий одного пользователя по HLS, DASH и MPEG-TS вместе. При достижении предела закрывается самая давно неактивная сессия; новое соединение MPEG-TS в этом случае не принимается.

  • Токен не виден. Токен не пишется в журнал и не показывается в консоли: на экране «Клиенты» (Клиенты) сессия видна как tok:<16 шестнадцатеричных цифр>.

  • Резерв OTT. Сессии с токеном в резервировании OTT (Резерв OTT/DVR) не участвуют.

Программу передач Ministra загружает из выгрузки XMLTV EPG-сервера (/xmltv, Выдача XMLTV).

Ограничения

  • Timeshift — только HLS (TS) одного потока.

  • Превью, плейлисты только видео и отдельных дорожек (video.m3u8, tracks-*) и архив в MPEG-TS не отдаются: такие адреса отвечают 404.

  • Интеграция проверена на эмуляторах этих middleware, на рабочих системах — ещё нет.