Протокол SRT¶
Открытый протокол, разработанный компанией Haivision. Базируется на протоколе UDT. Имеет широкое распространение и хорошие характеристики компенсации потерь пакетов данных.
Сценарии использования:
Peer между Perfect Streamer. На передатчике — настраивается в output, режим listen (по умолчанию). В этом режиме можно подключить несколько приемников. Для авторизации требуется прописать в Peer логины для приемников. На приемнике — настраивается в input. Указывается хост и порт передатчика, также логин и пароль. Для передачи логина и пароля в SRT streamer использует streamid в формате
login|password.Peer между Perfect Streamer и любыми сторонними SRT-стримерами. На передатчике можно настроить режим SRT client, отключив listen. SRT streamid, если надо, вводится в поле login. Для режима listen доступна авторизация по IP-адресу — вводится в поле login Peer. На приемнике можно включить режим listen, в поле login задать SRT streamid, а также можно задать хост, с которого разрешается прием.
Работа в режиме Listener: получение и передача потока телеканала с указанием порта приёма.
Порты для listen режима должны быть уникальны.
Доступно шифрование потоков (Crypto protection), используется AES-128. Для включения шифрования на обеих сторонах ввести Crypt Passphrase — общий ключ.
Если на передатчике используется режим listen (по умолчанию), то инициирование соединения происходит со стороны приемника, и для передатчика требуется аутентификация, приемники прописываются в peer. Обязателен логин и пароль.
Опции протокола SRT соответствуют описанию — API-socket-options.md
Reorder (SRTO_LOSSMAXTTL) — Значение, до которого может увеличиваться допуск на переупорядочивание. Допуск на переупорядочивание — это количество пакетов, которые должны следовать за обнаруженным «пробелом» в порядковых номерах входящих пакетов, чтобы был отправлен отчёт о потере (в надежде, что разрыв вызван переупорядочиванием пакетов, а не потерей). Значение допуска на переупорядочивание начинается с 0 и увеличивается при обнаружении переупорядочивания пакетов. Это происходит, когда получен «запоздалый» пакет с порядковым номером старше последнего полученного, но без флага повторной передачи. При таком обнаружении допуск на переупорядочивание устанавливается равным значению интервала между последним номером и порядковым номером данного пакета, но не более значения, заданного параметром SRTO_LOSSMAXTTL. По умолчанию это значение равно 0, что означает, что данный механизм отключён. SRTO_LOSSMAXTTL
Overhead (SRTO_OHEADBW, %) — Накладные расходы на восстановление полосы пропускания сверх входной скорости (см. SRTO_INPUTBW), в процентах от входной скорости. Действует только если SRTO_MAXBW установлен в значение 0. Отправитель: настраивается пользователем, по умолчанию: 25%.
Рекомендации: Накладные расходы предназначены для обеспечения дополнительной полосы пропускания в случае, если пакет занял часть полосы пропускания, но затем был потерян и должен быть передан повторно. Поэтому эффективная максимальная полоса пропускания должна быть достаточно выше битрейта вашего потока, чтобы оставалось место для повторной передачи, но при этом ограничена, чтобы повторно переданные пакеты не приводили к резкому увеличению использования полосы пропускания при потере больших групп пакетов. Не устанавливайте слишком низкое значение и избегайте 0, если параметр SRTO_INPUTBW установлен в значение 0 (автоматически). В противном случае ваш поток будет быстро прерываться при любом увеличении потери пакетов. SRTO_OHEADBW
Max Band (SRTO_MAXBW, bps) — Эта опция эффективна только при значении SRTO_MAXBW, равном 0 (относительное). Она управляет максимальной пропускной способностью совместно с параметром SRTO_OHEADBW по формуле: MAXBW = INPUTBW * (100 + OHEADBW) / 100. Если эта опция установлена в значение 0 (автоматически), фактическое значение INPUTBW будет оцениваться на основе скорости входного потока (случаев, когда приложение вызывает функцию srt_send*) во время передачи. Минимально допустимое значение оценки ограничено параметром SRTO_MININPUTBW, то есть INPUTBW = MAX(INPUTBW_ESTIMATE; MININPUTBW).
Рекомендации: установите для этого параметра ожидаемый битрейт вашей трансляции и оставьте значение по умолчанию 25% для SRTO_OHEADBW. SRTO_INPUTBW
Timeout (SRTO_CONNTIMEO, ms) — Значение таймаута соединения в миллисекундах. Это время, в течение которого подключающийся объект будет пытаться подключиться и ожидать ответа от удалённой конечной точки, прежде чем прекратить соединение с кодом ошибки. SRTO_CONNTIMEO