1.1. SRT: основная информация
SRT лучше чем RTMP ?
Да, потому что:
-
позволяет использовать множество кодеков (h264, HEVC, mpeg2 и т.д.). RTMP - только h264.
-
позволяет использовать многоканальный звук. RTMP - всего 2 канала.
-
использует современные методы быстрой передачи данных по UDP через нестабильное соединение. RTMP использует TCP.
Что такое Drops, Losts и Latency ?
Внутренне SRT разбивает данные на небольшие пакеты перед отправкой. Каждый пакет имеет длину 1316 байт.
При передаче пакет теоретически может быть потерян (поскольку UDP это позволяет). В этом случае SRT помечает пакет как "Lost" (потерянный). Но SRT пытается повторно отправить этот пакет.
Снова, снова и снова...
Итак, у нас есть :
Вопрос: сколько раз SRT пытается повторно отправить этот пакет (10 мс или 1 мин и т. д.)?
Ответ: это время задается параметром "Latency" (задержка). По умолчанию оно равно 120 мс.
По умолчанию SRT пытается повторно отправить потерянный пакет через 120 мс. Если у вас нестабильное соединение, вы можете увеличить значение «Latency» (максимум 5000 мс).
Далее:
Вопрос: что произойдет, если SRT не сможет успешно доставить Lost (потерянный) пакет за время, определенное в «Latency» (задержка)?
Ответ: в этом случае этот пакет помечен как "Drops" (отброшенный) и SRT забыл о нем.
Другими словами:
-
"Lost" (gотерянные) означают больные пакеты
-
"Drops"(отбрасывание) означает мертвые пакеты.
-
"Latency"(задержка) — это время обработки каждого зараженного пакета. Высокое значение означает больше шансов восстановить больной пакет.
Далее:
Вопрос: хорошо, я всегда буду использовать 5000 мс для задержки, в чем проблема?
Ответ: нет проблем, но имейте в виду - ваша студия получает данные с задержкой, равной "Latency" (задержке). Даже если у вас отличное интернет-соединение.
Другими словами, "Latency" (задержка) распространяется на все пакеты, а не только на больные. SRT делает это для выравнивания потока данных.
Таким образом, значение "Latency" (задержка) является компромиссом между «скоростью доставки» и «качеством изображения».
большое количество drop-пакетов означает артефакты для изображения
Как настроить "Latency" (задержку) ?
Вопрос: Какое значение Latency (задержки) я должен использовать для своего соединения?
Ответ: используйте специальный инструмент измерения скорости SRT, как описано
здесь.
Вы можете настроить Latency (задержку) на обоих сторонах соединения - на кодировщике и на сервере. SRT будет использовать максимальное значение для соединения.
Например: SRTStreamer/OBS/vMix использует значение Latency (задержки) как 100 мс, а SRTMiniServer использует 300 мс. Таким образом, SRT будет использовать 300 мс для этого соединения.
настроить задержку для STMiniServer. Будет применяться как минимум для всех подключений
как настроить задержку для OBS
О Passphrase и Stream ID:
Stream ID - он очень похож на «ключ потока» для RTMP и используется для управления доступом. Он работает как пароль (не кодовая фраза). Эта функция появилась в SRT 1.3.3 и позволяет использовать один порт для многих подключений. Если ваш кодировщик более старый и не имеет поля «Stream ID», пожалуйста, прочитайте этот
пост.
Passphrase - это секретная фраза для шифрования вашего потока. Будьте внимательны: шифрование добавляет 20% накладных расходов на пропускную способность.