Приём мультикаста и 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 перезапускает источник. Смена одного лишь таймаута применяется на лету, без разрыва приёма.
Что дальше¶
- Зарезервировать вход — второй источник и правила переключения.
- Ошибки входа — что означают счётчики, когда сигнал сыплет.
- Отдать сигнал обратно в сеть.