...
Code Block | ||
---|---|---|
| ||
rtp_activity_video=false |
Контроль наличия медиа трафика работает только при публикации, но не при проигрывании потоков.
Если браузер Chrome публикует пустое видео при занятой веб-камере
...
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({ name: streamName, display: localVideo, cacheLocalResources: true, receiveVideo: false, receiveAudio: false, videoContentHint: "motion" ... }).publish(); |
В сборке WebSDK 2.0.204 в пример Media Devices добавлен пример установки опции videoContentHint
Управление FPS в браузере Firefox
...
Отметим, что в этом случае Firefox может исключить камеру из списка при запросе доступа к ней, если драйвер камеры при запросе браузером сведений о ней не предоставляет требуемую комбинацию разрешения и FPS. Также Firefox может изменить разрешение публикации, если в сведениях о камере, предоставляемых драйвером, заданному FPS соответствует только одно разрешение.
Публикация стерео звука в браузере
Для публикации стерео звука в браузере битрейт аудио должен быть установлен не ниже 60000 бит/с. Этого можно добиться настройкой параметров кодека Opus на стороне клиента
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({
name: streamName,
display: remoteVideo,
constraints: {
audio: {
bitrate: 64000
},
...
}
...
}).publish(); |
или на стороне сервера
Code Block | ||
---|---|---|
| ||
opus_formats = maxaveragebitrate=64000;stereo=1;sprop-stereo=1; |
В этом случае браузер Firefox публикует стерео звук.
Публикация стерео звука в браузерах на основе Chrome
Для публикации стерео звука из Chrome, кроме настройки сервера, необходимы также изменения в коде клиента. В зависимости от реализации клиента, способы публикации будут разными
С использованием Web SDK
При использовании Web SDK, необходимо при публикации указать следующую опцию в ограничениях:
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({
name: streamName,
display: localVideo,
constraints: {
audio: {
stereo: true
},
...
}
...
}).publish(); |
С использованием Websocket API
Если в проекте используется только Websocket API, необходимо отключить эхоподавление
Code Block | ||||
---|---|---|---|---|
| ||||
var constraints = {
audio: {
echoCancellation: false,
googEchoCancellation: false
},
...
};
...
navigator.getUserMedia(constraints, function (stream) {
...
}, reject); |
При включенном эхоподавлении Chrome публикует моно звук, даже если в настройках кодека Opus заданы параметры стерео.
Обход блокировки шифрованного UDP трафика
В некоторых случаях шифрованный UDP медиатрафик может блокироваться на стороне провайдера. При этом публикация WebRTC потока с использованием UDP транспорта не будет работать и завершится с ошибкой Failed by RTP activity
. В таких случаях рекомендуется использовать TCP транспорт на стороне клиента
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({
name: streamName,
display: localVideo,
transport: "TCP"
...
}).publish(); |
Также можно использовать внешний или встроенный TURN сервер либо RTMP или RTSP для публикации потока.
Известные проблемы
1. Если веб-приложение расположено внутри iframe элемента, публикация видеопотока может не пройти.
...