Я пытаюсь выяснить, как изменить микрофон или веб-камеру , пока вы находитесь в видеочате с кем-то.
Я пытался в течение нескольких дней и ничего не работает Я следовал этому примеру , но, кажется, гораздо сложнее добиться изменения, пока кто-то уже подключен.
У меня есть проблемы: Если я изменю mi c звук потерян / ми c вообще не реагирует. Я также не могу изменить его обратно на значение по умолчанию.
Аналогичная вещь происходит, если я меняю веб-камеру. Поток зависает, последний кадр виден.
Я не получаю сообщения об ошибке, фактически он сообщает, что изменения были успешными.
Смена веб-камеры / mi c РАБОТАЕТ до установления вызова
Вот соответствующий кодовый блок. Везде, где я читаю, просто создайте новые ограничения и задайте нужный идентификатор устройства для потока аудио / видео.:
function ChangeDevice() {
if (localStream) {
localStream.getTracks().forEach(track => {
track.stop();
});
}
var audioSource = audioInputSelect.value;
var videoSource = videoSelect.value;
console.log(videoSource);
console.log(audioSource);
const newConstraints = {
audio: {deviceId: audioSource ? {exact: audioSource} : undefined},
video: {deviceId: videoSource ? {exact: videoSource} : undefined}
};
navigator.mediaDevices.getUserMedia(newConstraints).then(gotStream).then(gotDevices).catch(handleError);
}
function gotStream(stream) {
console.log('Adding local stream.');
localStream = stream;
localVideo.srcObject = stream;
sendMessage(['got user media', room]);
if (isInitiator) {
maybeStart();
}
return navigator.mediaDevices.enumerateDevices(); // I added this
}
Я думаю, что эти две функции являются соответствующими, ChangeDevice вызывается, когда я выбираю новое устройство из падать. Идентификаторы верны.
Вот весь код, который я использую:
pastebin.com / 6JrK4jJD