Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Для получения оптимального качества картинки с учетом пропускной способности канала при захвате WebRTC потока в браузере необходимо управлять битрейтом видео. Для этого в WCS предусмотрена возможность ограничения минимального и максимального битрейта видео в публикуемом потоке. Битрейт аудио не регулируется.

В сборках сервера до 5.2.1825 для управления битрейтом используется REMB. Начиная со сборки 5.2.1825 по умолчанию включен TWCC.

Поддерживаемые платформы и браузеры


Chrome

Firefox

Safari 11

Edge

Windows

+

+


+

Mac OS

+

+

+


Android

+

+



iOS

-

-

+


Настройки

REMB

Начиная со сборки 5.2.1825 поддержка REMB включается настройкой

Code Block
themeRDark
webrtc_cc2_twcc=false

Для ограничения битрейта предназначены следующие настройки WCS:

...

Эти настройки работают в основных современных браузерах и задают границы управления битрейтом при помощи REMB.

Как это работает

Если задан maxBitrate, WCS сервер, при достижении указанной планки, будет отправлять браузеру REMB-команду снизить битрейт.
Если задан minBitrate, WCS сервер, при достижении указанной планки, перестанет отправлять браузеру REMB-команды снижения битрейта.
Таким образом, настройки обозначают три диапазона, в каждом из которых WCS сервер управляет битрейтом:

ДиапазонУправление
1[0, minBitrate]

WCS сервер прекращает управление битрейтом и не отправляет REMB сообщений

2[minBitrate, maxBitrate]

WCS сервер осуществляет активное управление битрейтом: в зависимости от джиттера и равномерности входящего трафика, WCS принимает решение об отправке REMB команд для снижения битрейта. Если с каналом все хорошо, WCS ничего не делает и битрейт не снижается.

3[maxBitrate, ...] 

В этом диапазоне WCS сервер постоянно посылает команды на снижение битрейта до maxBitrate

TWCC

Начиная со сборки 5.2.1825, TWCC включен по умолчанию

Code Block
themeRDark
webrtc_cc2_twcc=true

Ограничение битрейта для TWCC можно настроить только на стороне браузера, в кбит/с

Code Block
languagejs
themeRDark
constraints.video.minBitrate=500
constraints.video.maxBitrate=1000

Настройки битрейта для TWCC работают в Android SDK 1.1.0.62, iOS SDK 2.6.122 и WebSDK 2.0.239.

Как форсировать повышение битрейта

В настоящее время, форсировать повышение битрейта можно только в браузере Chromeна основе Chromium, указав в SDP при помощи замены параметров x-google-max-bitrate и  x-google-min-bitrate.
Через настройки на стороне клиента и сервера форсировать увеличение битрейта невозможно, можно только управлять его понижением.
При этом, настройки, специфичные для Chrome, если они выставлены, будут иметь приоритет, т.е. настройки constraints и настройки сервера будут игнорироваться. Отметим, что настройка Chrome по умолчанию, определенная опытным путем, на сегодняшний день составляет

Code Block
themeRDark
x-google-max-bitrate=2500

В последних сборках Chrome при форсировании битрейта на стороне браузера необходимо указывать опцию videoContentHint: "motion" , поскольку при других положениях данной опции Chrome сбрасывает битрейт ради того, чтобы удержать разрешение публикации

Code Block
languagejs
themeRDark
    session.createStream({
        name: streamName,
        display: localVideo,
        ...
        videoContentHint: "motion"
    }).publish();

Форсирование повышения битрейта в Сhrome настройками сервера

...

Эти настройки предназначены для Chromium-based браузеров и работают, например, для Яндекс.Браузер, Opera и Vivaldi. Так же . Также применяются при использовании iOS Safari 12 . Не будут работать для Firefox и Edgeи выше.

В Firefox  форсирование битрейта не работает.

Использование

Удержание битрейта в определенных границах может быть полезным, например, при публикации видео для клиентов, использующих браузер Safari. Данный браузер чувствителен к резким изменениям битрейта, при этом ухудшается качество картинки вплоть до фризов и зависаний браузера. Поэтому при вещании для Safari рекомендуется максимально стабилизировать битрейт, задавая узкие пределы изменения, например

...

Форсирование повышения битрейта необходимо при публикации HD и 4K потоков. В этом случае рекомендуется использовать для публикации браузер Chrome.

Известные проблемы

1.  В последних В некоторых версиях (например, Chrome 75) браузер при публикации WebRTC H264 потока прижимает битрейт к нижней границе xгранице x-google-min-bitrate

Симптомы: при настройке

...