MediaDevices.enumerateDevices()
Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Метод MediaDevices.enumerateDevices()
собирает информацию о медиа-устройствах ввода и вывода, доступных в системе.
Синтаксис
navigator.mediaDevices.enumerateDevices() .then(function(MediaDeviceInfo) { ... })
Возвращаемое значение
Возвращает Promise
который, если выполнится успешно, вернёт массив экземпляров MediaDeviceInfo
, которые содержат информацию о доступных медиа-устройствах ввода и вывода.
Пример
Ниже, пример, использующий метод mediaDevices.enumerateDevices()
.
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
console.log("enumerateDevices() не поддерживается.");
return;
}
// Перечисление в цикле камер и микрофонов
navigator.mediaDevices
.enumerateDevices()
.then(function (devices) {
devices.forEach(function (device) {
console.log(
device.kind + ": " + device.label + " id = " + device.deviceId,
);
});
})
.catch(function (err) {
console.log(err.name + ": " + err.message);
});
результат перечисления в цикле:
videoinput: id = csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8= audioinput: id = RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM= audioinput: id = r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=
или, если один или более объектов MediaStream
активны, или получены постоянные разрешения:
videoinput: FaceTime HD Camera (Built-in) id=csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8= audioinput: default (Built-in Microphone) id=RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM= audioinput: Built-in Microphone id=r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=
Разрешения
Что бы использовать метод enumerateDevices()
в устанавливаемом приложении (к примеру в Firefox OS приложение), необходимо указать оба поля внутри файла манифеста приложения:
"permissions": {
"audio-capture": {
"description": "Required to capture audio using getUserMedia()"
},
"video-capture": {
"description": "Required to capture video using getUserMedia()"
}
}
Смотрите также : разрешение: аудио захват and разрешение : видео захват в продолжение темы.
Спецификации
Specification |
---|
Media Capture and Streams # dom-mediadevices-enumeratedevices |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- navigator.mediaDevices.getUserMedia
- WebRTC - the introductory page to the API
- MediaStream API - the API for the media stream objects
- Taking webcam photos - a tutorial on using
getUserMedia() for taking photos rather than video.