Skip to content

Приём мультикаста и MPTS

Транспортный поток по UDP — основной вход головной станции. Сигнал приходит либо отдельным сервисом на группу (SPTS), либо мультиплексом, в котором нужная программа — одна из десятка (MPTS). Mcaster принимает оба случая, и во втором принимает ствол один раз на все программы, сколько бы стримов вы из него ни собрали.

Подключите группу

Создайте стрим и на вкладке Источники нажмите + Добавить источник. Протокол — UDP MPEGTS:

  • Хост — адрес мультикаст-группы, например 239.255.1.77, либо 0.0.0.0 для юникаста на порт;
  • Порт — порт группы;
  • Входящий интерфейс — имя сетевого интерфейса или его локальный IPv4-адрес; пустое поле оставляет выбор системе.
  • Таймаут пира (мс) — сколько молчания терпеть до перезапуска приёма; пустое поле означает умолчание.

Нажмите Сохранить. Если в поле Хост стоит мультикаст-группа, станция сама подписывается на неё (IGMP для IPv4, MLD для IPv6). Юникаст отличается только адресом: 0.0.0.0 означает «слушать порт на всех интерфейсах».

Выбор интерфейса приёма

Если мультикаст приходит через отдельную сетевую карту, укажите её в поле Входящий интерфейс на вкладке Источники у входа MPEG-TS/UDP. Например, задайте Хост 239.255.1.77, Порт 5500 и Входящий интерфейс eno2. Вместо имени можно указать IPv4-адрес этой карты, например 192.168.20.10. Подписка на группу будет создана на выбранном интерфейсе, даже если маршрут по умолчанию проходит через eno1.

Поле работает для IPv4-мультикаста, в том числе при приёме от конкретного отправителя (SSM). Для IPv6 оставьте его пустым: явный выбор интерфейса для IPv6 не поддерживается. Для юникаста это поле не выбирает интерфейс приёма. Чтобы вернуть выбор по таблице маршрутов ОС, очистите поле и сохраните настройки. Смена интерфейса пересоздаёт подписку и кратковременно прерывает приём.

Имя или адрес должны принадлежать стримеру, который принимает поток. Если интерфейс не найден или у него нет IPv4-адреса, источник не запустится; причина появится в состоянии входа. В кластере проверьте настройку на каждом стримере, где может быть размещён этот стрим.

Если источник задаётся URL, используйте udp://239.255.1.77:5500?interface=eno2. Также поддерживается формат udp://eno2@239.255.1.77:5500; если задан и параметр interface, он имеет приоритет.

Интерфейс для отправки мультикаста задаётся отдельно у каждого пуша.

Программа из MPTS-ствола

Мультиплекс со спутника или от партнёра несёт несколько сервисов в одной группе. Нужный выбирается полем Программа (PNR) в том же источнике: заведите по стриму на сервис, у всех одинаковые группа и порт и разные номера программ.

Пустое поле означает «первая с контентом» — так и подписано в форме.

Что здесь важно на практике:

  • Ствол принимается один раз. Два стрима с одинаковой группой, портом, интерфейсом и SSM-источником делят сокет и демультиплексор: сеть видит одну подписку, машина — один разбор транспорта. Десять программ из одного ствола не стоят десяти приёмов.
  • Номер не указан — берётся первая программа, по которой реально идёт медиа. Не первая по PSI: таблицы в стволах бывают устаревшими и объявляют сервисы, чьи PID давно вырезаны.
  • Неразбираемый номер отвергается формой, а не понимается как «весь ствол»: иначе в стриме оказалась бы каша из всех программ мультиплекса.
  • Счётчики считаются на каждого подписчика отдельно, а общие ошибки ствола дублируются всем: по стриму видно и его собственные PID, и беду, случившуюся с транспортом целиком.

Приём от конкретного отправителя (SSM)

Когда в группу вещают несколько источников, а принимать нужно одного, задайте его адрес в поле Источник (SSM).

Ядро подписывается на группу с указанием отправителя (IP_ADD_SOURCE_MEMBERSHIP, IGMPv3) и чужой трафик отбрасывает до того, как он дойдёт до станции. Поддерживается для IPv4.

Приём по HTTP

Тот же транспортный поток, отданный по HTTP, — типичный способ забрать сигнал у партнёра, когда мультикаст между вами не ходит. Протокол источника — HTTP MPEGTS, заполняется URL и, при необходимости, Таймаут пира (мс).

Поддерживается chunked-передача. Обрыв соединения и молчание живого соединения различаются и видны в статусе входа по-разному — это два разных диагноза: «нас отключили» и «нам перестали слать».

У HTTP-входа по умолчанию включён входной буфер выравнивания (30 секунд): такой источник почти всегда приходит рывками, и без буфера рывки уезжали бы на выход.

Что разбирается из потока

Видео H264, HEVC, MPEG-2; аудио AAC, AC3, EAC3, MPEG-2 audio; DVB-телетекст и DVB-субтитры с их дескрипторами, кэпшны CEA-608/708, KLV-метаданные, маркеры SCTE-35, языковые дескрипторы дорожек из PMT.

Маркеры SCTE-35 принимаются, проходят стрим насквозь до каждого выхода и собираются в рекламные блоки, см. Метки рекламы.

Что должно быть верно в сети

  • Мультикаст не ходит через интернет. Станция должна стоять в том же сегменте, что источник группы, либо сеть между ними обязана маршрутизировать мультикаст.
  • Подписку делает станция. IGMP-запрос уходит с неё, и коммутаторы с IGMP snooping доставляют поток только подписчикам. Настраивать для этого на станции нечего — важно, чтобы сеть подписку пропускала.
  • Проверять надо с машины станции. tcpdump -i <iface> host 239.255.1.77 на ней отвечает на вопрос «пакеты долетают», и никакая проверка с соседней машины его не заменяет.

Применение изменений

Смена группы, порта, интерфейса, номера программы или URL перезапускает источник. Смена одного лишь таймаута применяется на лету, без разрыва приёма.

Что дальше