This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

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().

js
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 приложение), необходимо указать оба поля внутри файла манифеста приложения:

js
"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

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

Смотрите также