この記事は編集レビューを必要としています。ぜひご協力ください。
これは実験段階の機能です。
この機能は複数のブラウザで開発中の状態にあります。各ブラウザで用いるために、適切なベンダー接頭辞が必要な場合があります。互換性テーブルをチェックしてください。また、実験段階の機能の構文と挙動は、仕様変更に伴い各ブラウザの将来のバージョンで変更になる可能性があることに注意してください。
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-captureとpermission: 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でこのインターフェイスを使用できます。
関連項目
- navigator.mediaDevices.getUserMedia
- WebRTC - APIの導入ページ
- MediaStream API - media streamオブジェクトの導入ページ
- Taking webcam photos - videoよりも写真を撮るために
getUserMedia()を使用するためのチュートリアル