3 октября 2022

Я вижу квадратики…Что делать?

При трансляции видео по протоколу SRT можно наблюдать такое явление как рассыпание картинки, как на примере ниже
В данном статье мы хотим объяснить откуда это возникает и как избежать этого.
Как вы знаете протокол SRT построен на базе UDP и теоретически, допускает потерю пакетов. Именно потеря пакетов является причиной рассыпания картинки.

В протоке SRT введены 3 термина: Lost, Drops и Latency.

Lost - это потерявшийся пакет. Механизм SRT пытается найти потерянный пакет, но вечно он это делать не может. Параметр Latency как раз задает время, в течение которого SRT пытается найти этот пакет.

Если по прошествии этого времени пакет не удалось восстановить, он помечается как безнадежно потерянный (Drops). Именно возникновение Drops-пакетов приводит к рассыпанию картинки.
Например: вы видите, что за час трансляции у вас было 5 млн Lost-пакетов и 0 Drops. Это означает, что все потерянные данные SRT смог восстановить и конечно это означает, что картинка будет без рассыпаний. Если же статистика вам показывает, что количество Drops-пакетов растет - это повод увеличить параметр Latency.

Например, на картинке ниже вы можете видеть результат, когда Latency маленький и когда он увеличен.

Где выставлять значение Latency

Вы можете выставить значение Latency как на энкодере так и на сервере. При начале трансляции SRT выберет значение которое будет больше.

Какое значение Latency выставлять

По документации SRT, Latency рассчитывается как 2*RTT. RTT замеряется с помощью команды Ping, т.е. с помощью команды Ping вы замеряете время, которое нужно чтобы пакет прошел от энкодера к декодеру. К сожалению, не всегда есть возможность применить эту команду. Поэтому параметр Latency надо подбирать. Мы рекомендуем выставлять Latency в 300 mc (при хорошей связи) и 2000 mc (при средней связи).

Заметим, что в наших "free" энкодерах есть специальный режим замера именно SRT скорости. Например, в мобильном приложении StreamToStudio это выглядит так:

Вывод:

SRT, в отличие от RTMP, позволяет пользователю самому определять степень компромисса между качеством картинки и скоростью ее передачи. Рассыпание картинки при работе с SRT - это не ошибка SRT или энкодера. Это всего лишь сигнал о том, что настройка параметра Latency требует корректировки.

Дополнительно:

  • С другими, интересующими вас статьями вы можете ознакомиться здесь.

  • Скачать SRT Mini Server и иные наши продукты можно здесь.

  • Инструкция по установке и использованию help.
Made on
Tilda