IO — Ivan Labs

Технические основы низкозадержечного стриминга

2 мин чтения
RefluxЖелезо

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

Этапы, складывающиеся в общую задержку

Общая задержка — это сумма: времени захвата, времени кодирования, времени сетевой передачи, времени буферизации (часто самого крупного и наиболее управляемого фактора) и времени декодирования/отображения на принимающей стороне.

Из них буферизация обычно самый крупный и наиболее осознанно выбираемый фактор — это дизайнерское решение, а не неизбежная физическая стоимость, какими частично являются кодирование и передача.

Почему существует буферизация и почему она добавляет задержку

Условия сети варьируются — пакеты прибывают с непостоянными интервалами (джиттер), и буферизация сглаживает это, держа небольшую очередь данных перед воспроизведением, чтобы кратковременные сетевые сбои не вызывали заметных подёргиваний. Больше буфера означает больше устойчивости к плохим условиям сети, за прямую цену большей задержки между «это произошло» и «вы это видите».

Выбор протокола важнее выбора кодека для задержки

ПодходТипичная задержкаПостроен для
RTMP → платформа (Twitch/YouTube) → HLS/DASH зрителямНесколько секундНадёжная доставка многим одновременным зрителям в масштабе
WebRTC (peer-to-peer или на основе SFU)Меньше секундыКоммуникация в реальном времени, интерактивная (видеозвонки)

Конвейеры на основе RTMP/HLS построены вокруг предположения, что многим зрителям нужен надёжный поток, и некоторая задержка — приемлемая цена за эту надёжность. WebRTC построен вокруг противоположного предположения — небольшое число участников, где отзывчивость важнее крупномасштабной надёжности.

Выбор кодека: второстепенный фактор

Современные кодеки (H.264, H.265/HEVC, AV1) различаются по эффективности сжатия и скорости кодирования, что влияет на использование пропускной способности и то, сколько работы процессора/видеокарты требует кодирование — это может иметь значение для задержки на более слабом железе, где само кодирование становится узким местом, но это меньший фактор, чем выбор буферизации/протокола выше, для большинства реальных настроек.

Почему это не решённая, универсальная проблема

Платформе, обслуживающей миллионы одновременных зрителей, реально нужна надёжность, которую даёт буферизация — её удаление вызвало бы заметные подёргивания у значимой доли этих зрителей на неидеальных соединениях. Инструмент, построенный для взаимодействия один-на-один в реальном времени (вроде Reflux), может сделать противоположный компромисс, поскольку устойчивость, которую даёт буферизация, менее важна, чем отзывчивость, которую она стоит, для этого конкретного, менее масштабного случая использования.

Это лежащая в основе техническая логика того, почему платформенный стриминг по своей природе имеет задержку, которую не исправить одними лишь настройками OBS.

Частые вопросы

В чём главная разница между RTMP/HLS и WebRTC насчёт задержки?

Конвейеры на основе RTMP/HLS (используемые большинством платформенного стриминга) построены вокруг буферизации ради надёжности в масштабе, обычно добавляя несколько секунд задержки. WebRTC построен специально для коммуникации в реальном времени с задержкой меньше секунды (видеозвонки), жертвуя частью этой устойчивости буферизации ради скорости.

Более быстрый кодек всегда означает меньшую задержку?

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

Можно ли получить нулевую задержку в видеостриминге?

Нет — кодирование, сетевая передача и декодирование все занимают некоторое ненулевое время. «Низкая задержка» означает минимизацию этого до малой доли секунды, а не полное устранение, что физически невозможно.

Нужна помощь с этим?

Свяжитесь со мной, и я помогу разобраться.

Связаться со мной

Похожие статьи

Поделиться:X / TwitterLinkedIn