MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

MediaDevices.enumerateDevices()

これは実験段階の機能です。
この機能は複数のブラウザで開発中の状態にあります。各ブラウザで用いるために、適切なベンダー接頭辞が必要な場合があります。互換性テーブルをチェックしてください。また、実験段階の機能の構文と挙動は、仕様変更に伴い各ブラウザの将来のバージョンで変更になる可能性があることに注意してください。

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

構文

navigator.mediaDevices.enumerateDevices();

戻り値

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

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

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

deviceId
deviceIdはセッション間で一貫性のあるデバイスを表現するための識別子であるDOMString です。これはほかのアプリケーションから推測できず、呼び出されたアプリケーションのオリジンごとにユニークです。ユーザーがcookieをクリアしたときにリセットされます(プライベートブラウジングのためには、セッション間で一貫性のない異なる識別子が使われます)。
groupId
groupIdはグループ識別子であるDOMString です。同じ物理デバイスに所属する場合、2つのデバイスは同じグループ識別子を持ちます。たとえば、組み込みのカメラとマイクの両方があるモニターです。
kind
kindは "videoinput"、"audioinput" か "audiooutput"のいづれかが列挙された値です。
label
labelはこのデバイスを表すラベルである 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 + ": " + error.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
Media Capture and Streams
The definition of 'mediaDevices.enumerateDevices' in that specification.
勧告候補 Initial definition.

ブラウザ実装状況

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Stream API  未サポート 39 未サポート 

未サポート

未サポート 
Feature Android Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile
Stream API  未サポート  39 39 未サポート  未サポート 未サポート 

 

ChromeとOperaの実装

  • adapter.jsのポリフィルを通して、ChromeとOperaでこのインターフェイスを使用できます。

関連項目

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama
 最終更新者: YuichiNukiyama,