...
Контроль наличия медиа трафика работает только при публикации, но не при проигрывании потоков.
Отключение контроля активности видео и аудио дорожек по имени потока
В сборке 5.2.1784 добавлена возможность отключить контроль активности видео и аудио дорожек в потоках, имя которых совпадает с регулярным выражением
Code Block | ||
---|---|---|
| ||
rtp_activity_audio_exclude=stream1
rtp_activity_video_exclude=stream1 |
Это может быть полезно для потоков, трафик в которых может останавливаться на длительное время, например, для потоков с экрана или окна приложения:
Code Block | ||
---|---|---|
| ||
rtp_activity_audio_exclude=.*-screen$
rtp_activity_video_exclude=.*-screen$ |
В данном случае контроль активности не будет применяться к потокам с именами conference-123-user-456-screen
Если браузер Chrome публикует пустое видео при занятой веб-камере
...
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({ name: streamName, display: localVideo, cacheLocalResources: true, receiveVideo: false, receiveAudio: false, videoContentHint: "detail" ... }).publish(); |
По умолчанию, В сборках WebSDK до 2.0.242 эта опция по умолчанию установлена в detail
и указывает браузеру удерживать разрешение, заданное в constraints при публикации. Однако, при публикации с некоторых веб камер, подключаемых по USB, браузер может в этом случае сбрасывать FPS. Если необходимо удерживать FPS, но разрешение публикации при этом не важно, необходимо установить опцию в motion
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({ name: streamName, display: localVideo, cacheLocalResources: true, receiveVideo: false, receiveAudio: false, videoContentHint: "motion" ... ... }).publish();}).publish(); |
Начиная со сборки 2.0.242, videoContentHint
установлена в motion
по умолчанию. Значения detail
или text
следует выбирать только при публикации экрана в браузере.
В сборке WebSDK 2.0.204 в пример Media Devices добавлен пример установки опции videoContentHint
...
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({ name: streamName, display: remoteVideolocalVideo, constraints: { audio: { stereo: true }, ... } ... }).publish(); |
...
Code Block | ||||
---|---|---|---|---|
| ||||
var constraints = { audio: { echoCancellation: false,, googEchoCancellation: false }, ... }; ... navigator.getUserMedia(constraints, function (stream) { ... googEchoCancellation: false}, reject); |
При включенном эхоподавлении Chrome публикует моно звук, даже если в настройках кодека Opus заданы параметры стерео.
Обход блокировки шифрованного UDP трафика
В некоторых случаях шифрованный UDP медиатрафик может блокироваться на стороне провайдера. При этом публикация WebRTC потока с использованием UDP транспорта не будет работать и завершится с ошибкой Failed by RTP activity
. В таких случаях рекомендуется использовать TCP транспорт на стороне клиента
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({ }name: streamName, display: localVideo, ... };transport: "TCP" ... navigator.getUserMedia(constraints, function (stream) { ... }, reject); |
...
}).publish(); |
Также можно использовать внешний или встроенный TURN сервер либо RTMP или RTSP для публикации потока.
Известные проблемы
1. Если веб-приложение расположено внутри iframe элемента, публикация видеопотока может не пройти.
...