Table of Contents |
---|
Описание
Как правило, для передачи WebRTC медиаданных на транспортном уровне используется UDP. С одной стороны, это позволяет снизить задержки при передаче данных. С другой стороны, в результате потерь пакетов, качество высокобитрейтных FullHD и 4K трансляций снижается даже на относительно хороших каналах.
Если необходимо обеспечить качество WebRTC-трансляций, WCS позволяет использовать TCP на транспортном уровне в соответствии с RFC 4571 и 6544.
Поддерживаемые платформы и браузеры
Chrome | Firefox | Safari 11 | Edge | |
---|---|---|---|---|
Windows | + | + | -/+ | |
Mac OS | + | + | + | |
Android | + | + | ||
iOS | - | - | + |
Схема работы
- Браузер соединяется с сервером по протоколу Websocket и отправляет команду publish.
- Браузер захватывает микрофон и камеру и отправляет WebRTC поток на сервер через TCP.
- Второй браузер устанавливает соединение также по Websocket и отправляет команду play.
- Второй браузер получает WebRTC поток через TCP и воспроизводит этот поток на странице.
Последовательность выполнения операций (Call Flow)
Последовательность выполнения операций отличается от от публикации потока по WebRTC в в части установки WebRTC соединения:
1. Клиент отправляет серверу предложение локального SDP по Websocket.
2. Клиент получает SDP от сервера. В SDP указываются TCP ICE-кандидаты:
...
3. Клиент устанавливает TCP соединение на порты для аудио и видео данных, указанные в SDP, и начинает передачу медиаданных.
Аналогично, последовательность выполнения операций при воспроизведении потока будет следующей:
1. Клиент отправляет серверу предложение локального SDP по Websocket.
2. Клиент получает SDP от сервера. В SDP указываются TCP ICE-кандидаты.
3. Клиент устанавливает TCP соединение на порты для аудио и видео данных, указанные в SDP, и начинает прием медиаданных.
Настройка
Использование WebRTC через TCP включается настройкой в файле flashphoner.properties
Code Block | ||
---|---|---|
| ||
ice_tcp_transport=true |
Управление размерами буферов на прием и передачу
Размеры буферов для приема и отправки данных настраиваются при помощи следующих параметров:
...
По умолчанию, размеры буферов установлены в 1 Мб.
Использование портов
Для WebRTC через TCP используются TCP порты с номерами из диапазона, выделенного для WebRTC медиа портов
Code Block | ||
---|---|---|
| ||
media_port_from =31001 media_port_to =32000 |
Краткое руководство по тестированию
1. Для теста используем:
- WCS сервер
- веб-приложение Two Way Streaming для публикации и воспроизведения потока в браузере Chrome
...
- 192.168.1.5 - IP адрес WCS сервера
- 192.168.1.100 - IP адрес клиента
Известные проблемы
1. WebRTC соединение не устанавливается браузером Firefox под Windows 7
...