...
Поддерживаемые платформы и браузеры
Chrome | Firefox | Safari 11 | Edge | |
---|---|---|---|---|
Windows | + | + | + | |
Mac OS | + | + | + | |
Android | + | + | ||
iOS | - | - | + |
Схема работы
- Браузер соединяется с сервером по протоколу Websocket и отправляет команду publish.
- Браузер захватывает микрофон и камеру и отправляет WebRTC поток на сервер через TCP.
- Второй браузер устанавливает соединение также по Websocket и отправляет команду play.
- Второй браузер получает WebRTC поток через TCP и воспроизводит этот поток на странице.
...
По умолчанию, размеры буферов установлены в 1 Мб.
Управление размерами очередей
Размеры очередей TCP пакетов ограничиваются сверху и снизу настройками
Code Block | ||
---|---|---|
| ||
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 | ||||
---|---|---|---|---|
| ||||
session.createStream({ name: streamName, display: localVideo, cacheLocalResources: true, receiveVideo: false, receiveAudio: false, transport: "TCPUDP" }).on(STREAM_STATUS.PUBLISHING, function (stream) { ... }),.publish(); |
или воспроизведения (например, по TCP)
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({ name: streamName, display: remoteVideo, transport: "UDPTCP" }).on(STREAM_STATUS.PENDING, function (stream) { ... }).play(); |
...
Решение: отключить все дополнительные сетевые интерфейсы, кроме имеющего доступ к WCS серверу.
2. WebRTC видео может не воспроизводиться по TCP у всех подписчиков потока, если у одного из подписчиков проблемы на канале
Симптомы: не воспроизводится видео у всех подписчиков потока , если у одного из подписчиков проблемы на канале
Решение: использовать non-blocking IO при помощи настройки
Code Block | ||
---|---|---|
| ||
ice_tcp_nio=true |
3. WebRTC по TCP требует больше оперативной памяти по сравнению с UDP при использовании non-blocking IO
Симптомы: при возрастании трафика на сервере, резко растет потребление оперативной памяти, вплоть до завершения работы сервера
Решение: увеличить количество оперативной памяти на сервере, исходя из расчета
- 64 Gb RAM на 500 Мбит/с трафика
- 128 Gb RAM на 1 Гбит/с трафика