Versions Compared

Key

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

...

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


Chrome

Firefox

Safari 11

Edge

Windows

+

+


+

Mac OS

+

+

+


Android

+

+



iOS

-

-

+


Схема работы

  1. Браузер соединяется с сервером по протоколу Websocket и отправляет команду publish.
  2. Браузер захватывает микрофон и камеру и отправляет WebRTC поток на сервер через TCP.
  3. Второй браузер устанавливает соединение также по Websocket и отправляет команду play.
  4. Второй браузер получает WebRTC поток через TCP и воспроизводит этот поток на странице.

...

По умолчанию, размеры буферов установлены в 1 Мб.

Управление размерами очередей

Размеры очередей TCP пакетов ограничиваются сверху и снизу настройками

Code Block
themeRDark
ice_tcp_channel_high_water_mark=52428800
ice_tcp_channel_low_water_mark=5242880

По умолчанию, допустимый размер очередей находится между 5242880 и 52428800 байтами

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

Для WebRTC через TCP используются TCP порты с номерами из диапазона, выделенного для WebRTC медиа портов

...

Настройка на стороне сервера включает использование WebRTC через TCP по умолчанию для всех клиентов. При необходимости, использование TCP или UDP транспорта может быть выбрано на стороне клиента при помощи WebSDK. Для этого необходимо указать используемый транспорт в опциях потока при его создании для публикации (например, по UDP)

Code Block
languagejs
themeRDark
    session.createStream({
        name: streamName,
        display: localVideo,
        cacheLocalResources: true,
        receiveVideo: false,
        receiveAudio: false,
        transport: "TCPUDP"
    }).on(STREAM_STATUS.PUBLISHING, function (stream) {
    ...
    }),.publish();

или воспроизведения (например, по TCP)

Code Block
languagejs
themeRDark
    session.createStream({
        name: streamName,
        display: remoteVideo,
        transport: "UDPTCP"
    }).on(STREAM_STATUS.PENDING, function (stream) {
    ...
    }).play();

...

Решение: отключить все дополнительные сетевые интерфейсы, кроме имеющего доступ к WCS серверу.

2. WebRTC видео может не воспроизводиться по TCP у всех подписчиков потока, если у одного из подписчиков проблемы на канале

Симптомы: не воспроизводится видео у всех подписчиков потока , если у одного из подписчиков проблемы на канале

Решение: использовать non-blocking IO при помощи настройки

Code Block
themeRDark
ice_tcp_nio=true

3. WebRTC по TCP требует больше оперативной памяти по сравнению с UDP при использовании non-blocking IO

Симптомы: при возрастании трафика на сервере, резко растет потребление оперативной памяти, вплоть до завершения работы сервера

Решение: увеличить количество оперативной памяти на сервере, исходя из расчета

  • 64 Gb RAM на 500 Мбит/с трафика
  • 128 Gb RAM на 1 Гбит/с трафика