Versions Compared

Key

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

...

Code Block
themeRDark
codecs_exclude_sfu=alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,flv,mpv,vp8,h265
webrtc_cc_min_bitrate=1000000
profiles=42e01f,640028

...

1. Откройте пример SFU client в браузере, например https://test1demo.flashphoner.com:84448888/client2/sfu/examples/client/main.html, введите URL сервера, имя комнаты, пин-код и имя пользователя, нажмите Enter

Image RemovedImage Added

2. Поток пользователя User1 публикуется в комнате ROOM1

...

3. Откройте страницу примера в другом браузере или в другом окне браузера, введите URL сервера и параметры комнаты такие же, как на шаге 3, имя пользователя User2

64. Поток пользователя User2 проигрывается у окне User1

...

Имя параметра

Описание

Пример

romName

Имя комнаты

ROOM1

participantsСписок участников комнаты[]

nickName

Имя пользователя

User1

outgoingTracksСписок потоков, публикуемых пользователем[]
incomingTracksСписок потоков, проигрываемых пользователем{}
idИдентификатор медиасессии9de9107c-ce5f-4d6b-b7d6-ea233d691d09
codecВидео или аудио кодекH264
widthШирина картинки видео1280
heigthВысота картинки видео720
fpsFPS видео30
bitrateБитрейт видео или аудио, бит/с265368
sampleRateЧастота дискретизации аудио, Гц48000
channelsКоличество каналов аудио2
aliveПоток активенtrue
typeТип потокаVIDEO
compositeПоток включает несколько дорожекtrue
tracksСписок дорожек в композитном потоке{}

Действия над SFU потоками на сервере

В сборке 5.2.1068 добавлена возможность отображения SFU потоков как обычных WebRTC потоков на сервере. Эта возможность включается настройкой

Code Block
themeRDark
sfu_bridge_enabled=true

При этом для каждого участника будет создан поток с именем {room}-{participant}-VIDEO для видео потока и {room}-{participant}-AUDIO  для аудио. Эти потоки видны в статистике

Code Block
themeRDark
-----Stream Stats-----
...
streams_viewers=ROOM1-User1-AUDIO/0;ROOM1-User1-VIDEO/0
streams_synchronization=ROOM1-User1-AUDIO/0;ROOM1-User1-VIDEO/0

могут быть проиграны с сервера

Image Added

записаны по REST API или добавлены в микшер.

При публикации экрана создается поток с именем {room}-{participant}-VIDEO-screen, например

Code Block
themeRDark
-----Stream Stats-----
...
streams_viewers=ROOM1-User1-AUDIO/0;ROOM1-User1-VIDEO-screen/0;ROOM1-User1-VIDEO/0
streams_synchronization=ROOM1-User1-AUDIO/0;ROOM1-User1-VIDEO-screen/0;ROOM1-User1-VIDEO/0

Если поток опубликован в нескольких качествах, на WCS будет доступен поток в максимальном качестве, которое публикуется в настоящее время, например 720p. Если это качество перестает публиковаться (например, ухудшается канал участника), будет произведено автоматическое переключение на следующее доступное качество, например 360p.

Ограничения

Если участник публикует более одного потока с камеры, на WCS будет доступен только один поток.

Поддержка TURN

Поскольку для публикации и проигрывания аудио и видео дорожек в браузере используется стандартный объект RTCPeerConnection , работа через TURN сервер настраивается при создании этого объекта. Например, по умолчанию потоки в примере SFU Two Way Streaming публикуются напрямую:

code

Code Block
languagejs
themeRDark
pc = new RTCPeerConnection();
...

Если необходимо использовать TURN сервер, например, встроенный TURN сервер WCS, код должен быть изменен следующим образом:

Code Block
languagejs
themeRDark
let connectionConfig = {
    iceServers: [
        {
            urls: 'turn:wcs:3478?transport=tcp',
            credential: 'coM77EMrV7Cwhyan',
            username: 'flashphoner'
        }
    ],
    iceTransportPolicy: "relay"
};
pc = new RTCPeerConnection(connectionConfig);
...

Здесь:

  • wcs - адрес WCS  сервера;
  • flashphoner - имя пользователя встроенного TURN сервера по умолчанию;
  • coM77EMrV7Cwhyan - пароль встроенного TURN сервера по умолчанию

В этом случае медиа трафик пойдет через TURN сервер, встроенный в WCS. Эту возможность можно использовать также для обертывания WebRTC трафика в TCP при плохом качестве каналов у клиента, т.к. WCS не поддерживает TCP транспорт для SFU потоков.

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

1. Публикация потока, захваченного с какого-либо из окон на экране в нескольких качествах, и сворачивание этого окна приводит к крашу вкладки браузера Chrome

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

Решение: открыт баг в Chromium, до исправления этого бага (исправлен в версии Chrome 98.0.4736.0) публиковать поток, захваченный с какого-либо окна на экране, в одном качестве (без Simulcast)