---
title: Интеграция с IPTV middleware
url: https://doc2.pstreamer.tv/ru/manual/streamer/iptv_middleware.html
lang: ru
product: Perfect Streamer
version: 2.0.2.423
---

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

> **Важно**
>
> **Бета-версия 2.1.** Описанное здесь есть только в бета-версии 2.1: она ставится из бета-репозитория и только с лицензией, в стабильной версии 2.0.2 и в демоверсии этого нет. Бета-версия поставляется без гарантий, поддержка — по возможности ([Программа бета-тестирования](../extras/beta.md#extras-beta)).

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

Включаются две вещи: формы адресов на потоковом HTTP-сервере и сервер проверки токенов (Сервер проверки токенов). Обе настраиваются в консоли, а также в файле настроек ([Изменение параметра](../extras/config_editing.md#extras-config-editing-change)) и через HTTP API ([Управление через HTTP API](../extras/api.md#extras-api)).

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

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

| Адрес | Что отдаёт |
| --- | --- |
| `/<имя>/index.m3u8`, `/<имя>/mono.m3u8` | прямой эфир HLS |
| `/<имя>/index.mpd` | прямой эфир DASH |
| `/<имя>/mpegts` | прямой эфир MPEG-TS; у потока должна быть включена раздача по HTTP |
| `/<имя>/index-<начало>-<длительность>.m3u8`, `archive-…`, `mono-…` (и `index-…`, `archive-…` с `.mpd`) | архив DVR ([DVR: архив потока](ott_dvr.md#streamer-dvr)) с момента `<начало>` (время Unix в секундах) длительностью `<длительность>` секунд, до 31 суток, или `now` — до текущего момента |
| `/<имя>/timeshift_abs-<начало>.m3u8`, `/<имя>/timeshift_rel-<секунд>.m3u8` | timeshift: архив с прошлого момента (или `<секунд>` назад), который дальше идёт как прямой эфир |

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

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

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

Токен проверяет middleware. Его адрес задаётся сервером на вкладке «Внешние (биллинг)» экрана «Пользователи / Логины» ([Пользователи / Логины](../webui/configure.md#webui-users); запись в `/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 в этом случае не принимается.
- **Токен не виден.** Токен не пишется в журнал и не показывается в консоли: на экране «Клиенты» ([Клиенты](../webui/monitor.md#webui-clients)) сессия видна как `tok:<16 шестнадцатеричных цифр>`.
- **Резерв OTT.** Сессии с токеном в резервировании OTT ([Резерв OTT/DVR](../planning/ott_reserve.md#planning-ott-reserve)) не участвуют.

Программу передач Ministra загружает из выгрузки XMLTV EPG-сервера (`/xmltv`, [Выдача XMLTV](epg/middleware.md#streamer-epg-server)).

## Ограничения

- Timeshift — только HLS (TS) одного потока.
- Превью, плейлисты только видео и отдельных дорожек (`video.m3u8`, `tracks-*`) и архив в MPEG-TS не отдаются: такие адреса отвечают 404.
- Интеграция проверена на эмуляторах этих middleware, на рабочих системах — ещё нет.
