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 Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since август 2023 г..

Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

Метод 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

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

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