Перейти к содержанию

Управление ключевыми кадрами при захвате WebRTC в браузере

В некоторых случаях, браузеры могут присылать ключевые кадры (K-фреймы или I-фреймы) крайне неравномерно, что приводит к фризам при воспроизведении потока. Для того, чтобы ключевые кадры высылались с заданной периодичностью, служит настройка

periodic_fir_request=true

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

periodic_fir_request_interval=5000

По умолчанию, периодичность составляет 5 секунд.

Для того, чтобы предотвратить излишние посылки PLI-запросов, в сборке 5.2.561 добавлена настройка, которая задает минимальный интервал посылки PLI-запроса в миллисекундах

rtcp_pli_request_interval=1000

По умолчанию, минимальный интервал посылки PLI составляет 1 секунду. Для того, чтобы получать ключевые кадры наиболее стабильно, рекомендуется выставлять данную настройку равной periodic_fir_request, например

periodic_fir_request=true
periodic_fir_request_interval=5000
rtcp_pli_request_interval=5000

Особенности посылки ключевых кадров браузерами на основе Chromium

В некоторых сборках Chromium и основанных на них браузерах, например Chrome 80, при включенном аппаратном ускорении ключевые кадры высылаются с постоянной периодичностью в зависимости от разрешения публикации:

  • ниже 720p - 2 секунды
  • 720p и выше - 1 секунда

При публикации FullHD и 4K потоков размер ключевых кадров достаточно велик, чтобы при большом их количестве снизить пропускную способность канала, что ведет к фризам в публикуемом потоке. В этом случае необходимо отключить аппаратное ускорение в браузере

и настроить необходимую периодичность запросов ключевых кадров вручную. Например, для 4K потоков рекомендуется периодичность не выше 3-5 секунд.