navigator.mediaDevices.enumerateDevices()不在firefox上显示设备标签

时间:2017-10-09 14:18:15

标签: javascript firefox video-streaming tokbox

我正在研究媒体控制功能。我正在显示设备名称以从下拉列表中进行选择,并且它在Chrome上工作正常但在Firefox上它不会获取标签或设备名称。

3 个答案:

答案 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!');
        }