В последние годы, в связи со значительным ростом использования RTC, потеря пакетов данных часто происходит при плохих условиях сети. Потеря пакетов — распространенное явление в компьютерных сетях и одна из основных проблем устойчивости сети. В среде RTC восстановление данных должно выполняться не только в реальном времени, но и использовать как можно меньшую полосу пропускания. В видео автор подробно обсуждает, как повысить устойчивость видеосетей в сценариях потери пакетов.
Автор Воля Видео зависает рассматривается как показатель степени связности вызова. Поскольку исходные данные огромны, их необходимо закодировать (т. е. сжать), прежде чем их можно будет передать через сеть. иметь базовый RTC В настройках видеокадр можно запрограммировать как ключевой. кадрили P рамка.ключевой кадр больше, но его можно декодировать независимо, а кадр P меньше, но его код решения необходимо декодировать, обратитесь к кадру. Когда пакет данных потерян и уничтожен. P видео будет продолжать зависать при освобождении кадров, если только цепочка кодов не будет восстановлена (через ретранслировать) и не будет запущена новая цепочка (с использованием ключевой кадр). В активной перспективе для кодовой цепочки предусмотрено резервное звено, то есть прямое исправление ошибки (FEC), предотвращающие обрыв цепи.
в типичном RTC видеосеть Гибкая настройка в процессе,ретранслировать、ключевой кадри FEC Работайте вместе, чтобы предотвратить Видео зависит. В прошлом оптимизация этих трех механизмов значительно улучшала качество обслуживания, однако это не остановило развитие технологий следующего поколения: длительная; система отсчета (LTR) и код Рида-Соломона (RS код) Прямое исправление ошибок (FEC)。
Figure 1:Video freeze caused by packet loss
Когда получатель обнаруживает пробел в порядковом номере прибытия,Он просит отправителя выполнить ретранслировать. Хотя ретранслировать очень эффективно для некоторых сетей,Но есть две ситуации, когда это не работает:
Когда сеть RTT ретранслировать хорошо работает, когда он низкий, но менее эффективен, если буфер джиттера недостаточно длинный, чтобы позволить ретранслироватьприезжать. ТЭК Восстановление потерь в реальном времени достигается путем отправки данных четности вместе с исходными данными.
Таким образом, видео FEC имеет широкий спектр применения в RTC:
WebRTC Предоставляется на основе XOR видео FEC Надежная реализация FlexFec и ULPFEC (Защита неравномерного уровня прямое исправление ошибки) пакет. С алгоритмической точки зрения, основанной на XOR из FEC Есть фундаментальный недостаток: он плохо адаптируется к большему количеству данных. По мере увеличения количества пакетов в группе защиты производительность восстановления снижается экспоненциально. как Код MDS (максимальное расстояние разделения), Рид-Соломон Код генерации имеет лучшие свойства восстановления и может использоваться с RTC Трафик растет и расширяется бесконечно.
ключевой кадр очень важен для создания новых кодовых последовательностей видеорешений. Они играют важную роль в устранении сбоев резольвера и смягчении последствий катастрофических потерь. Поэтому ключевой кадрсуществовать особенно эффективен при восстановлении утраченного. Они могут напрямую разблокировать декодер, устраняя необходимость повторной передачи всех потерянных пакетов. Например, ситуация внезапной потери может потребовать столько же, сколько ретранслировать. 9 или 10 пакеты, запрос ключевой кадр может быть эффективнее, потому что ключевой кадр может содержать только 2 приезжать 3 пакеты данных.
Однако,ключевой кадриз Существенной проблемой является их размер, который обычно меньше P Рамка намного больше. Возникает дилемма: передать полноразмерную ключевую кадр вместо P Кадры могут усугубить перегрузку сети, в то время как сжатие ключевой кадр может привести к значительному снижению качества. Такое сжатие может вызвать мерцание, что ухудшает работу пользователя.
LTR Структура обеспечивает осуществимое решение. Они существуют при условии возмещения убытков с ключевой кадр аналогичен из эффективности, но меньше по размеру и лучше по качеству. В следующем разделе Воля углубляется в LTR из концепции ивысотный. design, узнайте, как он решает эти проблемы.
LTR Это функция, которая позволяет кодеку сохранять определенные кадры в памяти для использования в качестве эталона для кодирования будущих кадров. Эта концепция используется в различных кодеках, в том числе H.264、H.265 (HEVC) и VP8。
LTR Предоставляет новый способ эффективного восстановления после потерь. Такие как картина 2 Как показано, если декодер из-за 5 Если пакет данных потерян в кадре и заблокирован, получатель может получить последнее решение на основе своего LTR (в данном случае из кадра 3) для декодирования кадра 7。
Figure 2: How LTR help with video freeze with packet loss
иключевой кадр По сравнению с LTR-P Размер меньше,но качество выше. ЛТР-П Сопоставимыйключевой кадр Маленький 40% приезжать 50%, но он предлагает P Кадр аналогичного качества видео (если вдали от LTR не очень далеко). Следующая картина иллюстрирует ключевую кадри P Различия между кадрами:
Figure 3: Key frame on the left. LTR-P on the right.
Учитывая разницу в качестве, LTR-P Может стать основой для улучшения возмещения убытков. Больше нет необходимости разрешать каждый потерянный из пакетов, теперь существующий получатель может разрешать кодиз в соответствии с последним; LTR запрос кадра ЛТР-П. В существующих сетях с высокими потерями это гораздо эффективнее, чем ретранслировать.
картина 4 показал LTR извысотный дизайн. по сути,LTR Обычно работает при запуске следующего процесса (для аппаратного и программного обеспечения H.264 кодер):
Хотявысотный Дизайн выглядит просто, но есть некоторые проблемы, которые необходимо решить, чтобы он заработал. Ниже приводится развертывание LTR При возникновении некоторых проблем:
Figure 4: System diagram for the LTR design
Хотядлинная система отсчетасчитаетсяключевой кадризация заменяет решение, но важно четко понимать, LTR Не предназначен для замены ключевой кадр。ключевой Кодирование кадра не требует пояснений, тогда как LTR Для корректного решения задачи все равно необходимо сохранить в памяти соответствующую из системы отсчета. Эта разница означает, что если какие-либо крайние случаи не охвачены, это может привести к длительным паузам. Например, существовать LTR из A/B В ходе теста было замечено, что частота приезжать без видео значительно снизилась (ок. 2%), что показывает LTR иключевой кадрсуществовать До сих пор существует пробел в возможностях восстановления потерянных пакетов. Ниже приводится развертывание LTR Есть несколько серьезных проблем, которые необходимо преодолеть:
OpenH264 Обеспечивает комплексное API поддержка реализации LTR Связанные с большинством функций (например. LTR ограничитьиподтверждение), что значительно упрощает процесс проектирования и реализации. Однако существующие принципы работы не полностью изучены в тех случаях, когда они применяются. API Могут возникнуть проблемы при развертывании. Например, одна заметная проблема связана с внутренним поведением компилятора, который игнорирует LTR-P запросить, сгенерировать P рамка,прямойприезжатьгенерироватьключевой Только после кадра новая информация получила четкое подтверждение. ЛТР. Это привело к тупиковой ситуации, когда получатель постоянно запрашивал LTR-P, в то время как отправитель отправляет нерасшифрованное сообщение. P рамка. путем сброса IDR Оболочка кода после редактирования подтверждена из LTR статус для решения этой проблемы.
Воля LTR интегрированныйприезжать WebRTC очень сложен и требует детального понимания WebRTC Как обращаться с эталонной рамкой. Плохое управление и недостаточное понимание могут привести к проблемам. Например, сообщение существования отправляется после получения кадра (и до того, как кадр существования будет декодирован). LTR Подтверждено, что иногда будут длительные заморозки. Позже выяснилось, что эти лаги были вызваны LTR существованиеприжатез достигает декодера существования до того, как будет отброшен в буфер кадра, в результате чего отправитель не окажется в буфере получателя в соответствии с существованием. LTR генерировать ЛТР-П. только в LTR Подтверждено после декодирования LTR чтобы исправить эту проблему. После этого я перестал наблюдать приезжать LTR из Проблема долгосрочной задержки.
Хотя это было успешно реализовано LTR работает без проблем, но благодаря множеству ключей, разработанных с течением времени Специфическая оптимизация кадра, его развертывание также сталкивается со многими проблемами. Особенно важным вопросом является LTR-P В тот период было очевидно, что аудио/видео (A/V) Синхронный возврат, но ключевой С кадром этого не происходит. Углубленный анализ показал, что проблема связана со специализированной оптимизацией, которая очистила ключевую список кадров изретранслировать после переноса, тем самым значительно улучшая A/V синхронный. отсутствие понимания LTR Из Оптимизация привела к очевидным из A/V Синхронизировать различия. Этот сценарий иллюстрирует необходимость определить, что было применено к ключевой кадриз Оптимизацияи Исправить, чтобы обеспечить LTR Подобные функции включены для обеспечения такой же превосходной производительности.
Преодолев эти три проблемы, LTR Успешное развертывание без ущерба для каких-либо основных показателей качества. Это приводит к ситуации потери пакетов ключевой почти уменьшить количество кадров 20% без видео зависает。
За исключением того, что на основе XOR из FlexFEC снаружи, объединить Reed-Solomon Исправление ошибок кода значительно улучшило существующую производительность видеопотока с точки зрения восстановления потерянных пакетов. Преимущество проявляется не только в эталонном, но и в производственном тесте. От индикатора зависает.
WebRTC на основе XOR из ФЭК (например, FlexFec и ULPFEC) обеспечивает зрелую реализацию. Все они используют эвристические правила для покрытия различных сценариев потери пакетов и, поскольку исходный код открыт, они работают достаточно хорошо. Однако есть два недостатка, которые мотивируют Reed-Solomon код FEC из Использовать:
пакет защитных данных для обеспечения восстановления.
Figure 5: K parity packets cannot recover k lost packets
гипотезасуществоватьвидеои FEC Нажмите между 50/50 Выделите полосу пропускания, затем для k пакеты видеоданных, с k причина XOR Редактор кодиз FEC пакет. Это также называется кодом (k, 2k).
Каждый пакет FEC может быть восстановлен.
потерянные сцены, всего
Потерянная сцена. Следовательно, на основе XOR из FEC на скорость восстановления влияет
предел. когда k Превосходить 5 , скорость восстановления снижается экспоненциально. Другими словами, с современным RTC Приложения развиваются в сторону более высокого качества мультимедиа и более высокого трафика в зависимости от XOR из FEC Невозможно расширить.
RS код имеет более высокий коэффициент, чем код, основанный на XOR видео FEC Более превосходные свойства. Используйте то же самое из (т.е. к, 2к) Код редактора, RS Код генерации имеет константу из 100% скорость восстановления и бесконечно масштабируется по мере увеличения скорости трафика.
Figure 6: RS code workflow
Meta Используйте внутреннюю проприетарную версию Reed-Solomon От имени реализации кода для RTC видео FEC Алгоритмы обеспечивают поддержку. Для развертывания на мобильных клиентах RS поколениекод,Нужно реализовать алгоритм、Конфигурация кода кодека、Оптимизация памяти компилятора и оптимизация времени выполнения компилятора принимают осторожные решения.
Авторы тщательно спроектировали устойчивость существующей сети. (NR) Интеграция системы с целью RS поколениекоди FlexFec Могут динамически переключаться между собой и совместимы с временным разделением.
Сложность борьбы с потерей пакетов подчеркивает необходимость постоянных инноваций. очевидно,Универсального подхода недостаточно,Алгоритм необходимо корректировать в соответствии с различными пользовательскими сценариями и условиями. Некоторые области, требующие будущих улучшений, включают:
Прилагаю видео выступления: видеоадрес