我正在研究媒体控制功能。我正在显示设备名称以从下拉列表中进行选择,并且它在Chrome上工作正常但在Firefox上它不会获取标签或设备名称。
答案 0 :(得分:4)
navigator.mediaDevices.enumerateDevices()
将在媒体设备信息中返回空标签属性值。
为了使其正常工作,我在授予所有媒体权限后放置了此功能,因此它也返回了一个标签属性值。
答案 1 :(得分:3)
navigator.mediaDevices.enumerateDevices()返回一个使用MediaDeviceInfo实例数组实现的承诺。
在Firefox 56.0(64位)中它对我有用。
您可以这样做:
navigator.mediaDevices.enumerateDevices()
.then((data) => {
console.log('data', data);
})
.catch((err) => {
console.log('error getting MediaDeviceInfo list', err);
});
其中data是包含所有MediaDeviceInfo实例列表的数组。
更多信息: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices
答案 2 :(得分:0)
您需要先授予权限。试试这个代码
if (navigator.mediaDevices.getUserMedia) {
console.log('getUserMedia supported.');
const constraints = {audio: true};
let chunks = [];
let onSuccess = function (stream) {
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
console.log("enumerateDevices() not supported.");
return false;
}
//List microphones.
navigator.mediaDevices.enumerateDevices().then(function (devices) {
devices.forEach(function (device) {
if (device.kind === "audioinput") {
console.log(device.label);//Other parameters device.kind/device.deviceId
}
});
}).catch(function (err) {
console.log(err.name + ": " + err.message);
});
}
let onError = function (err) {
console.log('The following error occured: ' + err);
}
navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);
} else {
console.log('getUserMedia not supported on your browser!');
}