createHTML({ title: "Test the ability of opening multiple microphones via gUM",
bug: "1238038",
});
runTest(async () => {
// Ensure we use the real microphones by disabling loopback devices and fake devices.
await pushPrefs(["media.audio_loopback_dev", ""], ["media.navigator.streams.fake", false]);
try {
// Allow exposing microphone by calling gUM first
const defaultStream = await navigator.mediaDevices.getUserMedia({ audio: true });
for (const track of defaultStream.getTracks()) { track.stop();
}
const devices = await navigator.mediaDevices.enumerateDevices();
// Create constraints
let constraints = [];
devices.forEach((device) => {
if (device.kind === "audioinput") {
constraints.push({ audio: { deviceId: { exact: device.deviceId } },
});
}
});
if (constraints.length >= 2) {
// Open microphones by the constraints
let mediaStreams = [];
for (const c of constraints) {
let stream = await navigator.mediaDevices.getUserMedia(c);
mediaStreams.push(stream);
}
// Close microphones
for (const stream of mediaStreams) {
for (const track of stream.getTracks()) { track.stop();
}
}
mediaStreams = [];
} else {
dump("Skip test since we need at least two microphones\n");
}
} catch (e) {
ok(false, e.name + ": " + e.message);
}
});
</script>
</pre>
</body>
</html>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.