Звук от всех пользователей конференции не записывается во время записи

Поэтому я использую navigator.getDisplayMedia(), чтобы пользователь мог выбрать источник экрана для начала записи. Но в настоящее время он не поддерживает звук, поэтому я использую navigator.mediaDevices.getUserMedia({ audio: true }); для получения аудиопотока, а затем, в конечном итоге, добавляю к нему видеодорожку, а затем передаю этот поток в средство записи мультимедиа.

У меня веб-приложение для видеоконференцсвязи, мне удается записывать все виды аудио, но когда любой другой пользователь присоединяется к комнате, я не получаю его / ее звука в записях.

Кто-нибудь сталкивался с подобной проблемой?


person aditya    schedule 16.04.2019    source источник


Ответы (1)


getUserMedia дает вам микрофон

navigator.mediaDevices.getUserMedia({audio: true}) дает вам микрофон пользователя, а не звук из его системы.

Их микрофон может улавливать системный звук, но нет никаких гарантий. Например, не будет, если:

  1. У них выключена громкость
  2. Они используют гарнитуру

Конкретная причина, по которой вы не слышите других участников, - это echoCancellation включен по умолчанию во всех браузерах.

Без эхоподавления, когда ваш микрофон улавливает удаленный динамик, их голос немедленно отправляется обратно к ним, и они слышат эхо. Если их микрофон также не подавляет это эхо, вы получаете цикл с еще большим эхом.

Если вы знаете, что делаете, вы можете отключить echoCancellation с помощью:

await navigator.mediaDevices.getUserMedia({audio: {echoCancellation: false}});

или постфактум с:

await stream.getAudioTracks()[0].applyConstraints({echoCancellation: false});

Вместо этого используйте веб-аудио

Если это ваше собственное приложение для веб-конференций, то у вас уже должны быть все необходимые аудиодорожки. Вы должны иметь возможность передавать по крайней мере активного выступающего напрямую в MediaRecorder или, возможно, даже микшировать звук с помощью веб-аудио.

Приближается звук демонстрации экрана

Звук от совместного использования экрана указан в спецификации, но это необязательно, как для реализации, так и на усмотрение конечных пользователей.

Пока я считаю, что Chrome работает над его реализацией.

person jib    schedule 24.11.2019