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

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

MediaDevices.enumeratedDevices()  メソッドは、システム上で利用できる入出力メディアデバイスの情報を収集します。

構文

navigator.mediaDevices.enumerateDevices();

戻り値

列挙が成功した場合、使用できる入出力メディアデバイスの情報を持つMediaDeviceInfoオブジェクトの配列で満たされた{{ domxref("Promise") }} が返されます。

次の情報が返されます。プライバシーへの配慮のため、コールした時に現在のページにアクティブな{{domxref("MediaStream")}} オブジェクトがあるか、ユーザーがページのオリジンに対して認可に対して許可を出していない限り、label情報は空文字です。

MediaDeviceInfoは以下の情報を含みます。

deviceId
deviceIdはセッション間で一貫性のあるデバイスを表現するための識別子である{{domxref("DOMString")}} です。これはほかのアプリケーションから推測できず、呼び出されたアプリケーションのオリジンごとにユニークです。ユーザーがcookieをクリアしたときにリセットされます(プライベートブラウジングのためには、セッション間で一貫性のない異なる識別子が使われます)。
groupId
groupIdはグループ識別子である{{domxref("DOMString")}} です。同じ物理デバイスに所属する場合、2つのデバイスは同じグループ識別子を持ちます。たとえば、組み込みのカメラとマイクの両方があるモニターです。
kind
kindは "videoinput"、"audioinput" か "audiooutput"のいづれかが列挙された値です。
label
labelはこのデバイスを表すラベルである {{domxref("DOMString")}} です(たとえば、"External USB Webcam)。MediaStreamがアクティブな間か認可が許可されているときだけ使用できます。

mediaDevices.enumerateDevices()の使用例を示します。

if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
  console.log("enumerateDevices() not supported.");
  return;
}

// List cameras and microphones.

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=

認可

インストールできるアプリケーション(たとえば、 Firefox OS app)でenumerateDevices() を使用するには、マニフェストファイルに1つまたは両方の次のフィールドを設定する必要があります。

"permissions": {
  "audio-capture": {
    "description": "Required to capture audio using getUserMedia()"
  },
  "video-capture": {
    "description": "Required to capture video using getUserMedia()"
  }
}

さらなる情報はpermission: audio-capturepermission: video-captureを見てください。

仕様

Specification Status Comment
{{SpecName('Media Capture', '#mediadevices', 'mediaDevices.enumerateDevices')}} {{Spec2('Media Capture')}} Initial definition.

ブラウザ実装状況

{{Compat("api.MediaDevices.enumerateDevices")}}

関連項目