SRT-публикация¶
Приём по SRT устроен так: вы заранее говорите станции, куда звонить за сигналом, и она дозванивается до отправителя сама. Публикация переворачивает эту схему — корреспондент с OBS или мобильным энкодером сам дозванивается до кластера по одному адресу и одному порту, не зная и не выбирая, из каких машин кластер состоит. Дверь открыта на всех нодах сразу, а поток принимает та из них, которой кластер отдал захват стрима.
Так подключают внешних авторов: репортёра с телефоном, студию партнёра, камеру на событии. Им отдают одну строку подключения — всё остальное кластер решает сам.
Как кластер принимает звонок¶
- Выделенный UDP-порт стрима слушают все ноды кластера — на какую ни позвони, дверь одна и та же.
- Дозвонившийся проходит проверку passphrase прямо на рукопожатии.
- Поток принимает только та нода, которой кластер отдал захват стрима. Ноду выбирает раскладка кластера — по загрузке, тегам и живости, а не по тому, куда позвонили. Попал энкодер на неё — эфир пошёл, и стрим по требованию поднимается тут же.
- Звонок на любую другую ноду закрывается сразу после рукопожатия: этого стрима в её конфигурации нет, а молча держать соединение — значит показывать энкодеру принятый эфир, которого нет. Энкодер видит мгновенный обрыв и перезванивает; дозвонившись до ноды захвата, начинает вещать.
- Пока публикация идёт, дверь занята: второй энкодер, дозвонившийся до той же ноды, получает отказ «занято» и не роняет действующую трансляцию.
- Оборвавшаяся публикация ждёт возвращения: через несколько секунд тишины соединение закрывается, стрим переходит в ожидание. Захват при этом никуда не переезжает — вернувшийся энкодер продолжает эфир на той же ноде, пока кластер не переложит захват сам (например, когда нода вышла из строя).
Источники стриму не обязательны: стрим может жить только от публикации и подниматься с первым звонком. Источник, настроенный рядом с публикацией, работает резервом — живой эфир его перебивает.
Один адрес для всех энкодеров¶
Энкодеру нужен один адрес, а нод в кластере несколько. Настройка Адрес публикации (меню Настройки central) — это имя или IP, который консоль подставляет в строку подключения. Что стоит за этим адресом — DNS-имя с несколькими A-записями, VIP или UDP-балансировщик — выбор инсталляции; здесь разобран DNS-вариант как не требующий дополнительного софта. Пустая настройка означает хост консоли и годится только для одиночной машины.

Сценарий: DNS-имя с несколькими A-записями¶
В SRT нет перенаправлений: клиент звонит по UDP на конкретный адрес, и «спросите на соседней ноде» протокол сказать не умеет. Зато SRT-клиенты — OBS, Larix, VLC — при недоступности адреса сами перебирают A-записи имени, тратя порядка трёх секунд на мёртвую. Имя с A-записями на каждую ноду даёт отказоустойчивость силами самого клиента: нода умерла — энкодер дозвонился до следующей. Тот же перебор приводит энкодера и к ноде захвата: чужая нода рвёт соединение сразу после рукопожатия, а не по таймауту, поэтому попытки идут быстро.
Порядок настройки:
- Заявите публичные адреса нод. В карточке каждой ноды заполните Публичный адрес медиа — поле предлагает выбор из адресов, которые нода видит на своих интерфейсах; за NAT правильный адрес знаете только вы, впишите его руками.
- Сверьтесь с подсказкой. Под настройкой Адрес публикации консоль показывает кандидатов в DNS-записи — по одному адресу на живую ноду, с именем ноды. Это и есть список того, что нести в зону.
- Заведите A-записи. В своей DNS-зоне создайте имя — например,
publish.example.com— с A-записью на адрес каждой ноды из списка. - Впишите имя в «Адрес публикации» и сохраните. Кластер периодически резолвит имя и сверяет результат с реестром нод: у настройки видно, что имя ведёт на живые ноды. Имя, которое не резолвится или ведёт только на выключенные ноды, зажигает предупреждение — типовая ошибка сопровождения «ноду вывели, запись забыли» видна сразу, а не при первом сорванном эфире. Строки для энкодера у всех стримов с этого момента собираются с именем.
Две честные оговорки:
- Несколько A-записей — это отказоустойчивость, а не балансировка: резолверы кешируют и перетасовывают записи по-своему, и энкодеры одной сети могут дружно звонить в одну и ту же дверь. На раскладку это не влияет — какой ноде достанется захват, решает кластер; от DNS зависит лишь то, за сколько попыток энкодер попадёт в нужную дверь.
- Не всякий мобильный клиент перебирает записи. Часть приложений берёт первый адрес и долбится в него. Для таких надёжнее завести в профиле энкодера два адреса — основной и резервный.
Настройка стрима¶
Откройте стрим на вкладке Стримы и найдите секцию SRT-публикация:
| Поле | Что задаёт |
|---|---|
| UDP-порт | порт публикации; один порт — один стрим, на всех нодах сразу |
| Passphrase | ключ шифрования AES, 10–79 байт; при несовпадении звонок отклоняется на рукопожатии |
Passphrase необязателен, но порт без него — открытая дверь: публиковать сможет любой дозвонившийся. Оставляйте его пустым только в доверенной сети, о чём форма предупреждает.

Под полями собирается готовая Строка для энкодера — srt://адрес:порт?passphrase=… — с кнопкой копирования и QR-кодом: адрес с ключом вбиваются в мобильный энкодер с камеры, а не с клавиатуры. Адрес в строке — тот самый Адрес публикации из раздела выше: задайте его до того, как раздавать строку, иначе энкодер унесёт адрес одной конкретной ноды.
Рядом с QR — вкладки Larix и Moblin: та же дверь готовой ссылкой импорта для этих приложений — сканируется их камерой, соединение появляется в настройках само.

Подключение энкодера¶
В OBS: Настройки → Трансляция → Служба: Настраиваемый, в поле Сервер — строка из карточки стрима целиком:
srt://publish.example.com:9000?passphrase=ваш-ключ
Мобильному энкодеру покажите QR из той же секции. После старта вещания стрим поднимется за несколько секунд: энкодеру может понадобиться пара попыток, чтобы попасть на ноду захвата. Результат виден в списке стримов и на странице портов.
Сводка SRT-портов¶
Страница SRT-порты (в меню под Стримами) — карта всех SRT-дверей кластера: порты публикации и раздачи, чей каждый порт, задан ли passphrase, слушается ли фактически. Здесь же:
- выбор порта под новый стрим — занятые номера перед глазами, дубль порта помечен;
- живая публикация — адрес энкодера и нода, принимающая поток;
- тишина между звонками — сессии нет, порт просто слушается; кто примет следующий звонок, определяет раскладка кластера, и обещаний на этот счёт сводка не даёт;
- сверка адреса публикации — та же строка состояния, что у настройки.
Когда звонок отклоняют¶
| Что случилось | Что видит энкодер |
|---|---|
| Passphrase не совпал | отказ на рукопожатии, соединение не устанавливается |
| Звонок пришёл на ноду без захвата стрима | соединение закрывается сразу после рукопожатия; энкодер перезванивает, пока не попадёт на ноду захвата |
| Нода приёма уже занята действующей публикацией | отказ «занято»; идущая трансляция не прерывается |
| Публикация замолчала | через несколько секунд тишины соединение закрывается, стрим ждёт следующего звонка |
Что дальше¶
- Приём по SRT и RIST — классическая схема, когда адрес источника известен заранее.
- Доставка по SRT — отдать принятый сигнал дальше.
- Мониторинг — счётчики соединений и качество приёма.