MediaDevices.enumerateDevices()
   Baseline  2023   Newly available           
 Since August 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Метод 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>  |  
Совместимость с браузерами
Loading…
Смотрите также
- 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.