WebRTC, getDisplayMedia(), не захватывает звук удаленного стрима
Всех приветствую! Есть собственное WebRTC приложение на основе peerjs, - видео конференции. Пытаюсь реализовать запись средствами MediaRecorder и столкнулся с неприятным моментом. Беру стрим рабочего стола вот таким образом
let chooseScreen = document.querySelector('.chooseScreenBtn')
chooseScreen.onclick = async () => {
let desktopStream = await navigator.mediaDevices.getDisplayMedia({ video:true, audio: true });
}
Далее полученный desktopStream я благополучно визуализирую в DOM теге
const videoElement = document.querySelector('.videoElement')
videoElement.srcObject = desktopStream
videoElement.muted = false;
videoElement.onloadedmetadata = ()=>{videoElement.play();}
Предположим я получаю desktopStream на странице активной конференции, где все друг друга слышат и видят.
Что бы проверить desktopStream я запускаю в соседней вкладке youtube видео и благополучно его слышу и вижу в videoElement, однако остальное аудио от участников конференции в этот desktopStream не попадает. Разумеется MediaRecorder который принимает первым параметром целевой стрим, запишет видео где звука от участников нет, но звук с рабочего стола есть. Такое поведение характерно если получать desktopStream там же где идет конференция, если вынести функциональность на другу страницу, то захватывается звук как нужно. Даже не знаю куда копать, может подскажет кто-нибудь дельный совет? Если нужно дополнительно выложить код, разумеется выложу.
Ответы (1 шт):
Если конференция имеет несколько участников (больше 2-ух), лучше подумать о использовании медиа сервера, и так же там ты сможешь записать и обьеденить несколько стримов, janus или kurento, лучше janus, так как у kurento есть проблемы с задержкой и многопоточностью