Эту статью опубликовали технические специалисты ByteDance Ли Чэньгуан, Куан Цзяньсинь и Чэнь Цзяньпин. Эта статья была переработана и изменена.
Интерактивная прямая трансляция новых медиа стала одним из важнейших способов досуга и развлечений для большинства пользователей сети. Богатая традиционная культура, новости, соревновательные виды спорта, право, обмен знаниями и другой контент можно более эффективно отображать и распространять посредством интерактивных прямых трансляций на мобильных терминалах, что не только позволяет высококачественному контенту прямых трансляций достигать взрывного распространения и распространения, но и позволяет пользователям получать больше. Существует множество возможностей испытать, изучить и даже активно участвовать в прямом эфире. Технология прямой трансляции видео со сверхнизкой задержкой вступает на новый путь развития.
В этой статье вы познакомитесь с оптимизацией и развитием технологии прямой трансляции видео со сверхмалой задержкой.
Данная статья является первой в серии статей 11 Глава, общий каталог этой серии выглядит следующим образом:
Модернизация сетевой инфраструктуры, итерации технологий передачи аудио и видео, а также открытый исходный код WebRTC и другие факторы привели к постепенному снижению задержки аудио и видео в сервисах, что сделало технологию прямого вещания со сверхнизкой задержкой горячим направлением исследований. Аудио- и видеоуслуги в реальном времени переживают бум в сфере потребительского Интернета и постепенно ускоряют проникновение в сферу промышленного Интернета. После первого периода роста дивидендов в отрасли, производительность индустрии аудио и видео реального времени в моей стране постепенно углубилась и вступила в стадию рационального роста.
Выбор показателей задержки во многом зависит от степени интерактивной связи между пользователями и производителями контента, а сценарии богаты и разнообразны.
В этих экстремальных сценариях задержка на стороне пользователя должна быть как можно меньше. Режим с низкой задержкой, близкий к общению в реальном времени, может максимизировать участие пользователей, беспрепятственно создавать интерактивные эффекты с производителями контента и мобилизовать то, что видят пользователи. результирующий позитив. Например, в ключевых видах деятельности PK, вручении подарков, рейтинге профсоюзов и вознаграждениях в якорном шоу, основные магазины ценностей по обе стороны конкуренции надеются наблюдать за реакцией своих собственных якорей после рейтинга подарков в реальном времени. , чтобы обеспечить поддержку внутренней группы, принимающей решения, или стратегии последующей деятельности, обеспечивающие немедленную обратную связь.
На рисунке ниже отражено всестороннее рассмотрение роли технологии прямого вещания с малой задержкой с трехсторонней точки зрения: технология/продукт/операция. Влияние технологических изменений на положительный цикл всей экосистемы рассматривается с точки зрения комплексного внешнего воздействия; внутренние факторы.
Протокол RTMP является наиболее традиционным протоколом прямой трансляции. Якорь использует протокол RTMP для передачи видео- и аудиоданных в кодировке H.264/5 и AAC на сервер CDN поставщика облачных услуг для инкапсуляции и распространения. Сквозная задержка. обычно контролируется в пределах от 3 до 7 секунд.
Проблема в том, что RTMP имеет недостатки в масштабируемости, а также существуют определенные технические трудности с дальнейшим уменьшением задержки.
В случае протокола RTMP:Чтобы справиться с задержкойуменьшать Обязательно сжимает буфер загрузки плеера,Это вызовет серьезные проблемы с задержкой,Это делает воспроизведение неудобным (задержка до 2 секунд).
1)таймлапс видеои Имеется существенная разница в задержке заградительного взаимодействия.,Проблема Взаимодействие контента чата не соответствует ритму изображения передачи видео:
2)Взаимодействие между аудиторией и ведущим простое.,Это односторонняя передача контента, и ее невозможно осуществить.приезжатьдвусторонний(существовать RTC не могут быть существенно решены до внедрения технологии).
3)Первый аспект ограничений односторонней проводимостисуществовать:Потоковое вещание зрителя не может быть выполненоприезжать Адаптивная настройка в соответствии с условиями сети。Пользователи могут выполнять потоковую передачу мультимедиа только с фиксированной скоростью передачи данных и не могутприезжатьдинамическое восприятие,В сценариях, когда условия сети меняются в реальном времени (например, слабая сеть,(Переключение базовой станции мобильной связи и т. д.) Передача с фиксированной односторонней кодовой скоростью имеет высокую вероятность вызвать потерю кадров и заикание, что ухудшает качество просмотра. С другой стороны, когда условия сети лучше,,Передача с фиксированной скоростью передачи данных не может динамически увеличивать скорость передачи видео (более высокое качество изображения обеспечивает более комфортную работу)
4)существоватьпрямая трансляцияи В сценарии интерактивной прямой трансляции, где сосуществуют несколько сценариев.,Якорь использует традиционный RTMP для продвижения потока при обнаружении сцены PK с непрерывной пшеницей.,Возникнет проблема переключения между принудительной потоковой передачей/локальным соединением и интеграцией пшеницы/соединением с сервером и интеграцией пшеницы.,Такое изменение сцены вызовет мгновенные проблемы с зависанием аудитории. Если вы используете технологию прямого вещания на основеwebRTC, решение для прямого вещания со сверхнизкой задержкой.,Эту проблему слияния логики push-to-Lianmai можно решить дружественным способом, приезжая (нужно только изменить логику распределения канала потока пересылки-подписки сервера).,Не требует обходного планирования потоков push-медиаданных).
Прямая трансляция со сверхнизкой задержкой — это новый тип приложений, появившийся в последние годы.
Такие сценарии, как прямые трансляции электронной коммерции и прямые трансляции событий, характеризуются высокой степенью параллелизма и низкой задержкой. Задержка традиционных прямых трансляций в 3–20 секунд не может удовлетворить их потребности, но требования к взаимодействию в реальном времени не так хороши, как эти. Для типичных аудио и видео в реальном времени, таких как приложения для видеоконференций, нет необходимости уменьшать задержку до менее 400 мс.
С этой целью прямая трансляция со сверхнизкой задержкой сочетает в себе техническую архитектуру традиционной прямой трансляции и аудио и видео в реальном времени и обеспечивает сквозную задержку между ними, изучая сильные стороны друг друга.
Хотя для производителей прямых трансляций со сверхмалой задержкой не существует стандартного технического пути, его можно грубо свести к трем аспектам: преобразование протокола запроса, сетевой архитектуры и протокола передачи. В реальном процессе применения производители будут балансировать затраты и производительность. Метрики и другие факторы для выбора между различными протоколами и сетевыми архитектурами.
Оптимизация надежности на основе протокола UDP обеспечивает основу для слабых сетевых противодействий.
Традиционные прямые трансляции, такие как FLV/RTMP, используют протокол TCP (или протокол QUIC). TCP — это надежный протокол передачи, который жертвует передачей в реальном времени в обмен на целостность данных.
В слабой сетевой среде соединение «трехстороннее рукопожатие» перед передачей данных приведет к большой задержке.
Самым большим преимуществом UDP как ненадежного протокола передачи является высокая производительность в реальном времени, но он не гарантирует доставку и сортировку данных.
Аудио- и видеопродукты реального времени (например, прямая трансляция RTM со сверхнизкой задержкой) часто используют протокол UDP, а уровень протокола и уровень алгоритма оптимизируются поверх этого для повышения надежности и логики передачи.
Статьи по теме можно прочитать:
Протокол UDP часто встречается в практических приложениях вместе с протоколом RTP/RTCP.
RTP отвечает за передачу данных. Порядковый номер, тип порта, метка времени и другие поля в заголовке протокола могут обеспечить логическую основу для группировки, сборки и сортировки пакетов данных.
Как протокол управления RTP, RTCP отвечает за предоставление статистической обратной связи о качестве передачи RTP и предоставление параметров управления для слабых сетевых контрмер.
a=extmap:18 "http://www.webrtc.org/experiments/rtp-hdrext/decoding-timestamp" a=extmap:19 "uri:webrtc:rtc:rtp-hdrext:video:CompositionTime" a=extmap:21 uri:webrtc:rtc:rtp-hdrext:video:frame-seq-range a=extmap:22 uri:webrtc:rtc:rtp-hdrext:video:frame-type a=extmap:23 uri:webrtc:rtc:rtp-hdrext:video:reference-frame-timestamp a=extmap:27 uri:webrtc:rtc:rtp-hdrext:audio:aac-config
RTP использует заголовок частного расширения RTP для передачи значения DTS/CTS. Каждый пакет данных RTP передает значение DTS кадра через заголовок расширения RFC5285-Header-Extension. Первый пакет RTP и пакет VPS/SPS/PPS каждого кадра. передать RFC5285. Заголовок расширения Header-Extension содержит значение CTS кадра, а временная метка текущего кадра вычисляется через PTS = DTS + CTS. Используется для обеспечения быстрой синхронизации аудио и видео, а также точной синхронизации аудио и видео логики управления воспроизведением проигрывателя.
Расширенное поведение головы порядковый номер начала/конца кадра:Если первые несколько пакетов первого кадра потеряны,Затем вы можете быстро инициировать повторную передачу в соответствии с начальным порядковым номером, чтобы ускорить передачу первого кадра, если последние несколько пакетов текущего кадра потеряны;,Затем можно быстро инициировать повторную передачу на основе конечного порядкового номера кадра.,уменьшатьзадерживать,Уменьшить отставание.
Расширенное ношение головытип рамы:Если правильный тип кадра переносится и анализируется,Клиенту не нужно анализировать metadata ;В то же время при слабой сети клиент может пропустить B Прямое декодирование кадров P кадров, ускоряя кадры и уменьшая потенциальное заикание.
Расширенное ношение головы P Информация о кадре опорного кадра:Если возникла ситуация со слабой сетью,Затем клиент может отслеживать взаимосвязь опорного кадра и соответствующую ему временную метку, указанную в заголовке расширения.,перепрыгни B декодирование кадров , уменьшите вероятность застревания.
Чтобы ускорить взаимодействие сигнализации, CDN может напрямую возвращать клиенту поддерживаемые возможности аудио и видео, не запрашивая медиа-информацию, при определенных условиях, в настоящее время описание мультимедиа SDP не будет включать конкретные детали конфигурации аудио и видео. На уровне звука AnswerSDP в настоящее время не содержит информации заголовка, необходимой для декодирования AAC; в настоящее время нам необходимо использовать режим расширенного заголовка RTP для переноса конфигурации AAC, чтобы клиент мог самостоятельно анализировать и обрабатывать при получении. Пакет RTP для завершения действия декодирования, что уменьшает объем информации. Увеличьте время взаимодействия и улучшите вероятность успешного получения трафика.
Часть реализации стандарта сигнализации miniSDP (Douyin).
Сигнализация CDN возвращается в источник асинхронно.
RTP содержит компоненты заголовка расширения.
Прямая трансляция RTM с малой задержкой основана на технологии WebRTC. Создание двухточечной передачи на основе стандарта WebRTC обычно включает следующие шаги:
Клиент-серверная часть сигнализации разрабатывается независимо и использует стандартный режим сообщений SDP. Часть передачи мультимедиа использует платформу WebRTC с открытым исходным кодом и самостоятельно разработанный Byte движок аудио и видео в реальном времени для передачи мультимедиа.
Протокол сжатия MiniSDP:https://github.com/zhzane/mini_sdp。
Стандартный SDP относительно длинный (около 5–10 КБ), что не способствует быстрой и эффективной передаче. В сценарии прямой трансляции это особенно повлияет на время первого кадра.
MiniSDP выполняет высокопроизводительное сжатие стандартного текстового протокола SDP, преобразуя собственный SDP в меньший двоичный формат, чтобы его можно было передавать через пакет UDP.
Сократите время взаимодействия сигнализации, улучшите производительность передачи по сети, уменьшите время рендеринга первого кадра потоковой передачи в реальном времени и улучшите статистические показатели QoS, такие как скорость открытия/успеха второй потоковой передачи.
Сократите время взаимодействия сигнализации RTM и сократите время рендеринга первого кадра потоковой передачи RTM.
Если кэш сервера отсутствует, исходному процессу необходимо дождаться возврата данных в источник, прежде чем он сможет вернуть AnswerSDP с информацией AacConfig. Клиент отправляет STUN после получения AnswerSDP, а сервер может начать отправку данных только после получения STUN.
Как показано ниже слева:При асинхронном возврате к источнику,Сервер больше не ждет результата возврата к источнику и возвращает напрямую. ОтветSDP, возвращение к исходной точке и WebRTC Процесс установления соединения выполняется одновременно.
Как показано справа:ждатьприезжать WebRTC Соединение устанавливается успешно, данные возвращаются в источник и немедленно распространяются. RTP данные.
Увеличьте время просмотра на душу населения, измените стратегию кадрирования/декодирования механизма RTC, запретите потерю кадров RTC в режиме с малой задержкой и улучшите зависания при рендеринге видео в реальном времени.
В традиционных сценариях RTC приоритет отдается сохранению задержки. Весь канал вызывает различные потери кадров (включая, помимо прочего, модули декодирования и сетевые модули). В сценариях прямой трансляции FLV приоритет отдается обеспечению качества просмотра (без кадров). потеря, хороший эффект синхронизации аудио и видео)).
Если RTM хочет уменьшить отставание и получить преимущества Qoe, необходимо настроить стратегию управления трансляцией, а точки изменения логики настройки:
1)Убедитесь, что декодирование не занимает много времени из-за мягкого или жесткого декодирования. dequeuinputbuffer Подожди других api Блокировка операции jitterbuffer уровень ядра имеет уровень обязательной логики синхронизации аудио и видео для обеспечения воспроизведения аудио и видео;
2)В то же время верхний уровеньсуществовать Модуль сети мониторингаи Длина буфера модуля декодирования,Имеется соответствующая резервная логика:
Чтобы улучшить проникновение мобильного просмотра и вещания, решение унифицированного ядра RTC изначально несовершенно (требуется много времени для инициализации аппаратного декодера MediaCodec). Перенесите модуль декодирования видео RTM из ядра RTC в ядро воспроизведения TTMP, повторно используя модуль декодирования видео FLV (MediaCodec позволяет избежать повторной инициализации). Значительно сокращает время рендеринга первого кадра на платформе Android и повышает вероятность успешной потоковой передачи.
Основная логика RTC:
Улучшена логика управления трансляцией ядра RTM:
[1] Подробное объяснение TCP/IP - Глава 11 · UDP: Протокол пользовательских датаграмм
[2] Подробное объяснение TCP/IP - Глава 17·TCP: Протокол управления передачей
[6] Изучите RFC3550: базовые знания протокола передачи данных RTP/RTCP в реальном времени.
(Эта Статья уже опубликована в:http://www.52im.net/thread-4587-1-1.html)