В этом руководстве мы постарались затронуть проблемы и пути решения при потере кадров, отключении от сервера вещания, проблемах с сетевым соединением во время проведения онлайн-трансляции.
Во время трансляции кодировщик, например OBS, обрабатывает информацию, создавая кадры. В них заложены аудио и видео данные вашего стрима. Сразу после кодировки программа передает их с выбранным битрейтом на сервер вещания. Для этого используется функция «send», которая является частью операционной системы Microsoft/Apple/Linux. Если у вас нет проблем с интернет-подключением, функция отработает, и ваш кадр будет доставлен без лишних задержек и потерь сначала на сервер, а оттуда в плеер зрителю.
Однако, эта функция может выполняться дольше положенного из-за проблем с интернет-соединением. В этом случае кадры, которые вы пытались передать, вернутся обратно и повторно встанут в очередь на отправку. Тем временем устройство продолжает кодировать информацию со скоростью n-кадров в секунду. И эти данные не могут стоять в сторонке и ждать пока функция «send» завершит процесс и займется ими. Так продолжается пока не закончится оперативная память. При кэшировании данных порядка 700 миллисекунд, возникает эффект под названием «потеря кадров». Устройство начинает удалять кадры, чтобы очистить очередь для отправки не ушедших ранее. Поэтому стрим начинает прерываться при просмотре. Поймите, что с помощью «потери кадров» исправляются две проблемы:
Для работы с информацией кодировщик использует мощности процессора или видеокарты устройства. Выбор настраивается в свойствах программы, пример для OBS здесь. Если видите, что во время вещания параметр загрузки CPU превысил 70%, велика вероятность проблем с кодированием кадров. Чтобы избежать, следует снизить нагрузку. Закройте активные программы, кроме необходимых для проведения трансляции. Перезапустите кодировщик. Если нагрузка по-прежнему высока, попробуйте изменить настройки кодирования видео: уменьшить разрешение, снизить битрейт, снизить FPS, изменить профиль вещания.
Стандартно мы рекомендуем использовать CBR, так как при этом параметре гарантируется корректная картинка с минимальной задержкой. Но в случае нестабильного интернет-соединения иногда выходом будет включить в кодировщике опцию «Динамически изменять битрейт для управления перегрузкой сети/Dynamically change bitrate to manage congestion». Кодировщик будет анализировать проблемы в коннекте и автоматически уменьшать битрейт трансляции вместо потери кадров.
Если вы уверены, что проблема не в интернет-соединении, первое что нужно сделать для диагностики, попробовать соединиться с другим сервером вещания. Иногда сервера перегружены из-за большого количества стримов. В таком случае подключение к альтернативному серверу исправит проблему. На нашей платформе единая точка входа rtmp://live.boomstream.com/live
. При переподключении отправим ваш поток на сервер вещания, отличный от прошлого.
Следующий шаг, уменьшать битрейт до тех пор, пока трансляция не станет стабильной. Условия по прохождению сигнала от вас к серверу вещания не постоянны. Если вчера стрим прошел на ура, не факт, что сегодня повтор будет таким же успешным. Поэтому иногда не остается ничего другого, как снизить битрейт трансляции, чтобы компенсировать плохое соединение. Наши рекомендации:
Wi-fi соединение по природе недостаточно стабильно, чтобы обеспечить качественный сигнал от устройства к серверу. Поэтому следует перейти на проводное соединение. В противном случае вы вероятнее всего не сможете найти точную причину возникновения проблем.
Многие пользователи сети считают, что измерение скорости загрузки является ответом на все вопросы. Это не так. Параметр всего лишь показывает вашу теоретическую максимальную скорость подключения в идеальных условиях. Которые, как вы понимаете, недостижимы. Передача данных от вас к серверу вещания зависит от многих факторов. Соединение идет через несколько узлов связи, где могут происходить потери пакетов.
Пример: замер скорости интернет-подключения на отправку данных показывает 30 мбит/с. Этого более чем достаточно для проведения трансляции в FullHD на 5 мбит/с. Но обычный спидтест не покажет, что между узлами интернет-провайдеров идет потеря данных в размере 5%. Из-за этого сервер может не получать ключевые кадры и вещание будет с лагами или соединение будет отключено.
Есть инструменты, которые покажут, как идет сигнал от устройства до выбранной точки и каков процент потерь:
1) измеряем скорость соединения с нашим дата-центром по ссылке http://speedtest-msk.atlex.ru. Важны параметры upload, ping, jitter.
2) смотрим маршрутизацию, то есть путь сигнала от устройства пользователя до нашего сервера. Инструкция для Windows. Скачиваем программу winmtr отсюда https://winmtr.ru.uptodown.com/windows , и запускаем по инструкции:
live.boomstream.com
Для владельцев Mac следует открыть «терминал» и выполнить команду traceroute live.boomstream.com
После отображения копируете результат и отправляете нам.