MediaDevices: метод enumerateDevices()
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или всех поддерживающих браузерах.
Метод enumerateDevices() интерфейса MediaDevices запрашивает список доступных в данный момент устройств ввода и вывода медиаданных, таких как микрофоны, камеры, наушники и т. д. Возвращаемое Promise разрешается массивом объектов MediaDeviceInfo, описывающих устройства.
В возвращаемом списке будут отсутствовать устройства, заблокированные политикой разрешений документа: Политика разрешений: microphone, camera, speaker-selection (для устройств вывода) и т. д. Доступ к конкретным устройствам, отличным от стандартных, также ограничен API разрешений API разрешений, и в списке будут отсутствовать устройства, для которых пользователь не предоставил явное разрешение.
Синтаксис
enumerateDevices()
Параметры
Нет.
Возвращаемое значение
A Promise, который выполняется с массивом объектов MediaDeviceInfo. Каждый объект в массиве описывает одно из доступных устройств ввода и вывода медиаданных. Порядок важен — устройства захвата по умолчанию будут перечислены первыми.
Помимо устройств по умолчанию, доступны только устройства, для которых предоставлено разрешение.
Если устройство ввода медиаданных, вместо этого будет возвращен объект InputDeviceInfo.
Если перечисление устройств не удается, обещание отклоняется.
Требования безопасности
Доступ к API ограничен следующими условиями:
- Метод должен вызываться в безопасном контексте.
- Документ должен быть полностью активным, и его видимость должна быть «видимой».
Примеры
Вот пример использования enumerateDevices(). Он выводит список идентификаторов устройств с их метками, если они доступны.
if (!navigator.mediaDevices?.enumerateDevices) {
console.log("enumerateDevices() not supported.");
} else {
// List cameras and microphones.
navigator.mediaDevices
.enumerateDevices()
.then((devices) => {
devices.forEach((device) => {
console.log(`${device.kind}: ${device.label} id = ${device.deviceId}`);
});
})
.catch((err) => {
console.error(`${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=
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
enumerateDevices |
47 | 12 |
116enumerateDevices() перечисляет устройства ввода и вывода. Раньше возвращались только устройства ввода.39enumerateDevices() возвращает только устройства ввода. |
34 | 11 | 47 |
116enumerateDevices() перечисляет устройства ввода и вывода. Раньше возвращались только устройства ввода.39enumerateDevices() возвращает только устройства ввода. |
34 | 11 | 5.0 | 47 |
См. также
MediaDevices.getUserMedia- WebRTC - начальная страница API
- API для захвата медиаданных и потоков - API для объектов потока медиаданных
-
Снятие снимков с веб-камеры - руководство по использованию
getUserMedia()для съемки фотографий вместо видео.
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices