--- title: MediaDevices.enumerateDevices() slug: Web/API/MediaDevices/enumerateDevices translation_of: Web/API/MediaDevices/enumerateDevices ---

{{APIRef("WebRTC")}}{{SeeCompatTable}}

Метод MediaDevices.enumerateDevices() собирает информацию о медиа-устройствах ввода и вывода, доступных в системе.

Синтаксис

navigator.mediaDevices.enumerateDevices()
.then(function(MediaDeviceInfo) { ... })

Возвращаемое значение

Возвращает {{ domxref("Promise") }} который, если выполнится успешно, вернёт массив экземпляров {{domxref("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=

или, если один или более объектов {{domxref("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 разрешение : видео захват в продолжение темы.

Спецификации

Спецификация Статус Комментарий
{{SpecName('Media Capture', '#mediadevices', 'mediaDevices.enumerateDevices')}} {{Spec2('Media Capture')}} Initial definition.

Совместимость с браузерами

{{CompatibilityTable}}
Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support {{CompatChrome(45.0)}} [1] {{CompatVersionUnknown}} 39 {{CompatNo}} {{CompatNo}} {{CompatNo}}
Feature Android Android Webview Edge Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support {{CompatNo}} {{CompatNo}} {{CompatVersionUnknown}} 39 39 {{CompatNo}} {{CompatNo}} {{CompatNo}} {{CompatNo}}

[1] Behind a flag.

Совместимость с Chrome и Opera

Смотри так же