17 августа 2022

Замер задержки стриминга

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

Для этой статьи мы специально сделали несколько тестов в разных режимах:

  • локальной сети
  • через Интернет (прямое подключение по выделенному IP)
  • через Интернет в режиме Прокси
  • в Бондинг режиме (используя наше Бондинг решение)

Базовая информация

Нас, как конечных пользователей, интересует задержка “от стекла до стекла”. Как мы все понимаем, путь от “от стекла до стекла” состоит из следующих этапов:

A) захват изображения
B) кодирование (например, в H264 или другой кодек)
C) передача по сети
D) декодирование и отображение

И каждый этап занимает определенное количество времени, которое в сумме и дает общую задержку.
SRT в свою очередь, отвечает только за этап передачи по сети, таким образом, в этом уравнении он влияет только на одну компоненту. Более того, зачастую этапы кодирования и декодирования занимают больше времени чем другие этапы.

Еще раз хотим обратить внимание: даже если SRT обеспечит ультранизкую задержку это не значит, что у вас будет ультранизкая задержка “от стекла до стекла”.

Немного о природе SRT

Хотелось бы прояснить момент, почему SRT справляется со своей задачей лучше, чем RTMP. Для начала заметим, что RTMP основан на TCP, а SRT на UDP.

Начиная с 2000 годов, в связи с взрывным ростом Интернета стал сказываться “возраст” TCP протокола (1976 г.). Неэффективность TCP протокола в новых условиях стала все более заметной. В результате чего, некоторые исследователи стали работать над специализированными протоколами, но уже на базе UDP.

В частности, в 2001 г. доктор Yunhong Gu начал работать над протоколом UDT (на базе UDP). По мере развития, этот протокол обеспечил гарантированную передачу больших данных более эффективно, чем TCP. Эта работа, получила заслуженное признание в IT-мире и ее результаты, легли в основу SRT. Мы упомянули этот факт для того, чтобы подчеркнуть что в основе SRT лежит отличный фундамент.

Теперь от слова к делу

Для наших тестов мы приехали к нашему коллеге, который любезно предоставил нам свою студию для проведения тестов.

В качестве энкодера мы использовали камеру Panasonic AG-CX350, которая умеет генерировать SRT-поток, включая разрешение 4к.
Также мы использовали SDI-карту BlackMagic DeckLink MiniMonitor для вывода SDI-сигнала. И конечно же использовали vMix, для просмотра сигнала по NDI.

Тест № 1: Локальная сеть

Из этого теста видно, что задержка составляет~ 650ms при выводе NDI и ~ 900ms при выводе в SDI.

Тест № 2: через Интернет (прямое подключение по выделенному IP)

Этот тест мы проводили в своем офисе используя Larix Broadcaster на Android-смартфоне.
Из этого теста видно, что задержка составляет~ 850ms при выводе NDI.

Тест №3: через Интернет в режиме Прокси

Результаты этого теста изображены на фотографии ниже.
Как вы видите и в этом тесте, задержка в пределах 600ms.

Тест №4: в Бондинг режиме (используя наше Бондинг решение)

Результат этого теста на фотографии ниже. Задержка держалась в рамках 1.5 sec.

Вывод:

Как показали наши тесты, c помощью SRT можно добиться задержки “от стекла до стекла” менее 1 sec. А при оптимизированных параметрах энкодинга считаем, что задержку можно снизить до 300 - 500ms.

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

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

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

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