Задержка трансляции — это не рассинхрон губ и голоса
Зрители видят эфир с опозданием, а губы не совпадают с голосом — это две разные проблемы с разными решениями. Из чего складывается задержка, какие её части можно уменьшить и почему растущий рассинхрон — это проблема тактовой синхронизации, а не настройки задержки.
Две жалобы звучат почти одинаково и не имеют друг к другу никакого отношения. «Зрители видят с опозданием» — это задержка. «Губы не совпадают с голосом» — это рассинхрон. Их исправляют в разных местах и разные люди, и первое полезное, что можно сделать, — перестать считать их одной проблемой.
Как отличить за десять секунд
| Симптом | Что это | Где исправляется |
|---|---|---|
| Всё приходит с опозданием, но звук и картинка совпадают между собой | Задержка | Настройки доставки и плеера |
| Голос и губы не совпадают, сдвиг остаётся примерно постоянным | Фиксированный сдвиг | Ваш собственный звуковой тракт, до энкодера |
| Голос и губы не совпадают, сдвиг растёт по ходу трансляции | Дрейф | Расхождение тактовых генераторов ваших аудио- и видеоустройств |
| С опозданием и с рассинхроном | Две отдельные проблемы | Сначала исправьте синхронизацию — она на вашей стороне |
Главное различие: задержка — это опоздание, которое можно заложить в бюджет, а рассинхрон — это неисправность. Десять секунд задержки — это проектное решение. Двести миллисекунд рассинхрона губ и голоса — это поломка при любой задержке.
Из чего складывается задержка
Задержка — не одно число, которое создаёт что-то одно. Это сумма, и у каждого слагаемого свой владелец. Если знать, какое слагаемое какое, сразу ясно, можно ли с ним что-то сделать.
Ваш энкодер. Ему нужно набрать достаточно кадров, чтобы сжимать их относительно друг друга, и затем отдать результат. Это немного, и в основном определяется настройками буфера самого энкодера.
Путь до нас. Физическое расстояние плюс та защита, которую вы запросили. Если вы используете SRT, в URL заложен запас задержки не меньше 500 мс: вы сознательно купили это опоздание в обмен на устойчивость к потере пакетов, и это обмен, который работает как задумано, а не неисправность.
Наше кодирование и упаковка. Поток перекодируется в лестницу качеств и нарезается на сегменты. dcast использует сегменты по 4 секунды с интервалом ключевых кадров 2 секунды, поэтому сегмент нельзя опубликовать, пока не накопятся все его 4 секунды. При сегментной доставке это самое большое слагаемое во всей цепочке, и это арифметика, а не неэффективность.
Доставка зрителю. Донести сегменты туда, где находится зритель.
Буфер плеера. Прежде чем что-то показать, плеер копит сегменты, чтобы минутное замедление соединения зрителя не превратилось в заметную остановку картинки. О существовании этого слагаемого большинство людей даже не знает, а после упаковки оно часто самое большое. Плеер, который держит три сегмента по 4 секунды, отстаёт от прямого эфира на двенадцать секунд ещё до того, как нарисовал первый кадр, — не потому, что что-то тормозит, а потому, что он решил подстраховаться.
Что можно уменьшить, а что нельзя
Сложите слагаемые — и сразу видно, где есть запас. Физику — расстояние, скорость сети — не изменить. Буфер вашего энкодера настолько мал, что его подстройка редко стоит риска. Запас задержки SRT можно уменьшить, но ровно настолько же уменьшится и ваша устойчивость к потере пакетов, а если вы выбрали SRT, то, вероятно, не просто так.
Два слагаемых с реальным запасом — длительность сегмента и буфер плеера, и они связаны: плеер буферизует сегментами, поэтому длительность сегмента умножается. В dcast сторона плеера доступна как режим задержки трансляции — normal, low или ultra, — и здесь важно точно понимать, что делает эта настройка: она меняет объём буфера плеера и вообще не доходит до энкодера. Сетка кодирования одинакова для всех трансляций на платформе.
Вот честная форма этого обмена. Короткий буфер приближает зрителя к прямому эфиру, но хуже защищает от перебоев его собственного соединения; длинный буфер — наоборот. Настройки, которая даёт и то и другое, не существует, и тот, кто говорит, что какой-то протокол устраняет этот обмен, просто перенёс его в другое место, а не убрал.
Решите, насколько «прямым» должен быть ваш эфир
Большинству трансляций низкая задержка не нужна, а тем, кому нужна, обычно нужна по одной конкретной причине — и её стоит назвать, прежде чем жертвовать надёжностью.
Если зрители общаются с вами в реальном времени — вы зачитываете чат, отвечаете на вопросы, проводите аукцион, — задержка и есть весь продукт, и зритель, отстающий на двадцать секунд, участвует уже в другом разговоре, а не в вашем.
Если зрители могут увидеть событие дважды — матч, где соседи за стенкой кричат «гол» раньше, или любая ситуация, когда уведомление на телефоне может опередить вашу трансляцию, — задержка превращается в проблему спойлеров.
Если ни то ни другое не подходит, а для большинства эфиров так и есть, щедрый буфер — лучшее инженерное решение: сбой, от которого он защищает (остановка картинки посреди выступления), зрителю заметнее, чем отставание на десять секунд от события, которое он больше нигде не видит.
Задержка, которую вы добавляете себе сами
Прежде чем винить доставку, стоит посчитать задержку, которая возникает внутри вашей собственной студии: она часто больше, чем кажется, и это та часть, которую вы действительно можете убрать.
Каждое устройство на пути сигнала чего-то стоит. Камера, конвертер, видеомикшер, скалер, второй микшер для проектора — каждое на мгновение задерживает картинку, пока делает свою работу. Цепочка из четырёх устройств — это четыре задержки, и ни одна из них не указана там, где её легко найти.
Беспроводные линии обходятся дороже проводных. Беспроводному видеопередатчику нужно упаковать сигнал в пакеты, защитить и собрать обратно; эта защита — ровно тот же обмен, что и запас задержки SRT, только решение за вас принимает устройство.
Ретрансляция стоит целого лишнего пути. Если сигнал идёт с площадки в офис, а оттуда на платформу, вы платите за оба плеча плюс за то, что делает промежуточная коробка. Нередко выясняется, что «задержка стриминга», на которую кто-то жалуется, — это в основном лишнее звено, которое осталось по историческим причинам.
Найти её можно так: поставьте перед камерой часы и сфотографируйте их вместе с каждым экраном по цепочке — монитором самой камеры, программным выходом микшера, превью энкодера. Каждый шаг покажет, сколько стоила эта ступень. Очень часто оказывается, что одно устройство отвечает за большую часть задержки, и убрать его с пути быстрее и дешевле, чем менять любые настройки дальше по цепочке.
Рассинхрон губ и голоса — совсем другая неисправность
Теперь вторая жалоба. Если голос и губы не совпадают, изменение настроек задержки не поможет: звук и видео едут вместе, и весь упакованный поток опаздывает как единое целое. Рассинхрон означает, что они пришли уже со сдвигом или что-то их разделило.
Почти всегда это происходит до энкодера. Звук и картинка приходят в ваш энкодер через разное оборудование, а разному оборудованию нужно разное время.
Медленнее обычно видео. Камера обрабатывает и масштабирует, карта захвата преобразует, микшер компонует. Каждый шаг немного стоит. Звук же часто идёт гораздо более коротким путём — микрофон напрямую в аудиоинтерфейс.
Поэтому обычное решение — задержать звук, а не сдвинуть видео вперёд, ведь вперёд ничего не сдвинешь: картинка и так приходит настолько рано, насколько вообще может. Почти в каждом видеомикшере и аудиоинтерфейсе есть задержка звука именно для этого.
Сначала измерьте, потом выставляйте. Хлопните один раз в ладоши перед камерой и микрофоном одновременно, запишите программный выход и посмотрите, где хлопок оказался на каждой дорожке. Так у вас будет число, а не догадка, и для одной и той же цепочки оборудования это число обычно стабильно — выставляете один раз.
Когда сдвиг растёт по ходу трансляции
Фиксированный сдвиг раздражает, но решается легко. Сдвиг, который начинается с малого, а через час доходит до целой секунды, — это другая неисправность, и настройки задержки его не удержат.
Это проблема тактовой синхронизации. Ваше аудиоустройство и видеоустройство отсчитывают время каждое своим генератором, и если они расходятся хотя бы на крошечную долю, сдвиг накапливается всё время, пока вы в эфире. Одна сотая процента — это треть секунды в час.
Решение — дать им общий тактовый сигнал, а не исправлять симптом. Если оборудование это поддерживает, синхронизируйте звук и видео от одной опоры. Если нет — а с бытовой техникой это обычная ситуация, — выбирайте пути, которые держат их вместе: звук, встроенный в видеосигнал по HDMI или SDI, или захваченный тем же устройством, что и видео, вместо отдельного аудиоинтерфейса со своим кварцем.
Если ни то ни другое недоступно, практичный выход — делать отдельные трансляции достаточно короткими, чтобы накопленная ошибка оставалась ниже порога, на котором её кто-то заметит, и заново выравнивать синхронизацию между блоками.
Порядок диагностики, который работает
Прежде всего проверьте собственный программный выход на своём компьютере. Если синхронизация нарушена уже там, ничто дальше по цепочке её не ломало и никакая настройка платформы её не починит.
Если локальный выход в порядке, проверьте запись доставленного потока. Синхронизация, которая верна локально и нарушена дальше, — действительно редкость, и о ней стоит сообщить, потому что это не проблема настроек.
Только убедившись, что синхронизация правильная, стоит вообще браться за задержку. Если исправлять задержку, пока звук не попадает в картинку, получится просто более быстрый неправильный поток.
И измеряйте задержку так, как её ощущает зритель, а не по статистике энкодера: выведите на экран часы, смотрите трансляцию на постороннем устройстве и сфотографируйте оба экрана. В это число входит буфер плеера — слагаемое, которого ваш энкодер не видит и которое часто оказывается самым большим.
Часто задаваемые вопросы
Почему зрители видят трансляцию с задержкой в 20–30 секунд?
Задержка складывается из нескольких частей: буфер вашего энкодера, путь до нас, нарезка на сегменты, доставка и собственный буфер плеера. При сегментной доставке больше всего весят последние две. dcast публикует сегменты по 4 секунды, поэтому плеер, который копит три сегмента, прежде чем что-то показать, уже по собственному выбору отстаёт от прямого эфира на двенадцать секунд.
Можно ли убрать задержку полностью?
Нет. Часть слагаемых — это физика, а часть — защита, которую вы покупаете сознательно: запас задержки SRT, буфер плеера, который сглаживает перебои в соединении зрителя. Надёжность можно обменивать на задержку в обе стороны, но обойтись без того и другого сразу нельзя.
Рассинхрон губ и голоса — это проблема задержки?
Нет. Задержка сдвигает звук и картинку вместе. Рассинхрон означает, что они уже разошлись, почти всегда потому, что пришли в ваш энкодер через разное оборудование с разным временем обработки. Исправляется это в вашей собственной цепочке, до того как поток уйдёт от вас.
Задерживать звук или сдвигать видео вперёд?
Задерживайте звук. Видео, которое уже прошло через камеру, карту захвата и видеомикшер, вперёд не сдвинешь: раньше, чем сейчас, оно уже не придёт. Измерьте сдвиг хлопком в ладоши и выставьте ровно такую задержку на звук.
Во время долгой трансляции рассинхрон голоса и картинки нарастает. Почему?
Потому что ваши аудио- и видеоустройства отсчитывают время по отдельным тактовым генераторам, которые слегка расходятся, и ошибка накапливается. Фиксированная задержка не исправит растущий сдвиг. Где можно, используйте общую опорную синхронизацию или передавайте звук встроенным в видеосигнал, а не захватывайте его отдельно.
dcast Team
Professional video streaming experts helping creators succeed.
Похожие статьи
Начните свой видеобизнес сегодня
Присоединяйтесь к тысячам авторов, которые монетизируют контент с DCAST.
Начать бесплатно



