Распространенные проблемы во время онлайн-трансляции и их решение

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

Что такое потеря кадров?

frame_congestion...

Во время трансляции кодировщик, например OBS, обрабатывает информацию, создавая кадры. В них заложены аудио и видео данные вашего стрима. Сразу после кодировки программа передает их с выбранным битрейтом на сервер вещания. Для этого используется функция «send», которая является частью операционной системы Microsoft/Apple/Linux. Если у вас нет проблем с интернет-подключением, функция отработает, и ваш кадр будет доставлен без лишних задержек и потерь сначала на сервер, а оттуда в плеер зрителю.

Однако, эта функция может выполняться дольше положенного из-за проблем с интернет-соединением. В этом случае кадры, которые вы пытались передать, вернутся обратно и повторно встанут в очередь на отправку. Тем временем устройство продолжает кодировать информацию со скоростью n-кадров в секунду. И эти данные не могут стоять в сторонке и ждать пока функция «send» завершит процесс и займется ими. Так продолжается пока не закончится оперативная память. При кэшировании данных порядка 700 миллисекунд, возникает эффект под названием «потеря кадров». Устройство начинает удалять кадры, чтобы очистить очередь для отправки не ушедших ранее. Поэтому стрим начинает прерываться при просмотре. Поймите, что с помощью «потери кадров» исправляются две проблемы:

  • сохраняется стабильность интернет-подключения. Когда происходит накопление кадров из-за проблем соединения, «потеря кадров» позволяет избежать еще большего ухудшения коннекта. Представьте, что произойдет с каналом, если все накопленные кадры будут отправлены на сервер вещания? Большой массив информации окончательно перегрузит канал и может привести к разрыву соединения. К тому же из-за переполнения памяти устройство может просто зависнуть, полностью испортив мероприятие.
  • минимизация задержки вещания. Постоянное накопление неотправленных данных приводило бы к такой задержке, что трансляцию уже нельзя было бы назвать живым вещанием.

Решения возникших проблем:

Снизить нагрузку на CPU или GPU.

Для работы с информацией кодировщик использует мощности процессора или видеокарты устройства. Выбор настраивается в свойствах программы, пример для OBS здесь. Если видите, что во время вещания параметр загрузки CPU превысил 70%, велика вероятность проблем с кодированием кадров. Чтобы избежать, следует снизить нагрузку. Закройте активные программы, кроме необходимых для проведения трансляции. Перезапустите кодировщик. Если нагрузка по-прежнему высока, попробуйте изменить настройки кодирования видео: уменьшить разрешение, снизить битрейт, снизить FPS, изменить профиль вещания.

Динамический битрейт.

Стандартно мы рекомендуем использовать CBR, так как при этом параметре гарантируется корректная картинка с минимальной задержкой. Но в случае нестабильного интернет-соединения иногда выходом будет включить в кодировщике опцию «Динамически изменять битрейт для управления перегрузкой сети/Dynamically change bitrate to manage congestion». Кодировщик будет анализировать проблемы в коннекте и автоматически уменьшать битрейт трансляции вместо потери кадров.

Сменить сервер вещания.

Если вы уверены, что проблема не в интернет-соединении, первое что нужно сделать для диагностики, попробовать соединиться с другим сервером вещания. Иногда сервера перегружены из-за большого количества стримов. В таком случае подключение к альтернативному серверу исправит проблему. На нашей платформе единая точка входа rtmp://live.boomstream.com/live . При переподключении отправим ваш поток на сервер вещания, отличный от прошлого.

Уменьшить битрейт.

Следующий шаг, уменьшать битрейт до тех пор, пока трансляция не станет стабильной. Условия по прохождению сигнала от вас к серверу вещания не постоянны. Если вчера стрим прошел на ура, не факт, что сегодня повтор будет таким же успешным. Поэтому иногда не остается ничего другого, как снизить битрейт трансляции, чтобы компенсировать плохое соединение. Наши рекомендации:

low_bitrate...

  • Разрешение: 426 x 240, 300–700 кбит/с
  • Разрешение: 640 x 360, 400–1000 кбит/с
  • Разрешение: 854 x 480, 500–2000 кбит/с
  • Разрешение: 1280 x 720, 1000–3000 кбит/с
  • Разрешение: 1920 x 1080, 2000–5000 кбит/с

Не использовать wi-fi соединение для вещания.

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

Проверить маршрутизацию.

routing...

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

Пример: замер скорости интернет-подключения на отправку данных показывает 30 мбит/с. Этого более чем достаточно для проведения трансляции в FullHD на 5 мбит/с. Но обычный спидтест не покажет, что между узлами интернет-провайдеров идет потеря данных в размере 5%. Из-за этого сервер может не получать ключевые кадры и вещание будет с лагами или соединение будет отключено.

Есть инструменты, которые покажут, как идет сигнал от устройства до выбранной точки и каков процент потерь:

1) измеряем скорость соединения с нашим дата-центром по ссылке http://speedtest-msk.atlex.ru. Важны параметры upload, ping, jitter.

2) смотрим маршрутизацию, то есть путь сигнала от устройства пользователя до нашего сервера. Инструкция для Windows. Скачиваем программу winmtr отсюда https://winmtr.ru.uptodown.com/windows , и запускаем по инструкции:

  • распаковываете архив. Переходите в папку, которая соответствует вашей операционной системе: 32 битной или 64 битной.
  • для запуска используете файл под названием WinMTR.
  • Если не знаете какая у вас ОС, то запускаете обе версии, какая заработает, с той и продолжим.
  • После запуска программы в поле Host вставляете live.boomstream.com
  • Нажимаете кнопку Start. Начнут изменяться цифры в программе, так как она совершает запросы по указанному адресу.
  • Когда в столбце Sent цифра достигнет 100, нажимаете Stop.
  • Далее нажмите кнопку Export TEXT и сохраните файл с любым именем.
  • Этот файл отправляете вашему менеджеру из службы поддержки, либо на support@boomstream.com

Для владельцев Mac следует открыть «терминал» и выполнить команду traceroute live.boomstream.com После отображения копируете результат и отправляете нам.