Свой приёмник SRTLA

LOLS IRL понимает стандартный srtla, совместимый с BELABOX, поэтому ваш приёмник ведёт себя точно так же, как наши релеи. Вот что запускать, какие порты важны и единственная ошибка, из-за которой мобильный канал вообще не доходит до вашей машины.

Хостить ничего не обязательно: бесплатные релеи LOLS Cloud существуют для того, чтобы бондинг работал из коробки, а можно поднять свой приёмник и не зависеть ни от кого. У людей есть веские причины хостить самим. Вы хотите, чтобы стрим приходил на инфраструктуру, которую вы контролируете, вам нужна машина физически рядом, где у нас нет релея, вы не хотите думать о лимите или просто любите запускать свои вещи. Ничто в приложении не привязано к нашим серверам, так что переключение сводится к смене имени хоста.

Что вы строите

телефон (wifi + мобильная сеть)
   |
   |  srtla, UDP, один сокет на сеть
   v
srtla_rec          слушает публичный UDP-порт, собирает каналы
   |
   |  обычный SRT, UDP, на localhost
   v
медиасервер        MediaMTX или аналог
   |
   +--> OBS или рестрим дальше на Twitch / Kick / YouTube

Два компонента, и у каждого своя задача. srtla_rec из проекта BELABOX понимает бондинг: каждый канал, который открывает телефон, регистрируется в нём как часть одной группы, и он превращает эту группу обратно в один обычный SRT-поток. Затем он пересылает этот поток на SRT-listener, и дальше работает медиасервер. Обычно берут MediaMTX: он может отдать поток в OBS, переопубликовать или записать, но подойдёт всё, что принимает SRT.

Где запускать

Приёмник должен быть доступен из каждой сети, по которой стримит телефон, а на практике это значит публичный адрес. Небольшого VPS вполне хватит: это пересылка пакетов, а не перекодирование, так что мегабиты и скромный процессор важнее числа ядер. Размещайте его географически рядом с местом, откуда вы стримите, по той же причине, по какой выбирают ближайший релей: расстояние это задержка, которую не вернуть, и она оплачивается снова при каждой повторной отправке.

Ошибка, на которой попадаются почти все

Приёмник в домашней сети, по адресу вроде 192.168.1.50, доступен из вашего Wi-Fi и больше ниоткуда. Мобильный канал не может добраться до частного адреса, поэтому он не регистрируется, и бондинга нет: вы стримите по Wi-Fi, только с лишними шагами, а статистика покажет один канал вместо двух.

Либо хостите на машине с публичным адресом, либо пробросьте UDP-порт на роутере к машине в вашей сети и направьте приложение на публичный адрес роутера. Динамическое DNS-имя избавит от перепечатывания каждый раз, когда адрес меняется.

Порты

PortДля чего
UDP, ваш порт srtla, входящий из интернетаЕдинственный порт, к которому обращается телефон. По традиции 5000. Каждый канал приходит со своего адреса и порта, так что открывать или настраивать что-то для каждого канала не нужно.
UDP, ваш SRT-listener, локальныйСюда srtla_rec пересылает собранный поток. MediaMTX по умолчанию слушает SRT на 8890. Открывать его в интернет не нужно, если только вы не хотите, чтобы и обычные SRT-клиенты могли публиковать в него.
Всё, что отдаёт ваш медиасерверRTMP, RTSP, HLS или WebRTC в OBS или зрителю, целиком на ваше усмотрение, к пути бондинга это не относится.

UDP это не TCP

Файрволы, облачные группы безопасности и правила проброса на роутерах очень часто по умолчанию работают с TCP. Регистрация srtla, отправленная на правило только для TCP, пропадает без ошибки где-либо, и это выглядит точно так же, как если бы приёмник лежал. Если канал не регистрируется, сначала проверьте протокол в правиле, а потом всё остальное.

Stream id

srtla_rec передаёт SRT stream id дальше без изменений, так что в поле Stream id приложения нужно вписать то, что ждёт сервер за ним. С MediaMTX это форма publish: путь и, если включена аутентификация, учётные данные:

publish:mypath
publish:mypath:username:password

Включите аутентификацию, если порт открыт в интернет. Публичный адрес с публикацией без аутентификации рано или поздно найдёт кто-то, кроме вас.

Направляем приложение на него

  1. В LOLS IRL: Streams → + → SRTLA.
  2. Host: ваше публичное имя хоста. Port: UDP-порт, который слушает srtla_rec.
  3. Stream id: строка publish, которую ждёт ваш медиасервер.
  4. Latency: для начала 2000 ms. Когда вы в эфире, приложение показывает время прохождения туда и обратно, которое оно измеряет, и предлагает значение, которое на близкой машине обычно ниже значения по умолчанию.
  5. Сохраните, включите, выходите в эфир и разверните оверлей статистики. По одной строке на канал. Две строки значит, что обе сети зарегистрировались.

Проверяем, что это действительно работает

Что полезно знать заранее

Застряли на каком-то шаге или нужен второй взгляд на приёмник, который не принимает второй канал? Спросите в Discord или напишите на support@lols.gg. Приложите свой регион, то, что показывает оверлей статистики, и то, что написал в лог приёмник, и обычно хватает двух сообщений.

Смотрите также: бондинг за пять минут про сторону приложения и чтение индикаторов, бесплатные релеи, если хостить не хочется, и все гайды.