MediaDeviceInfo

MediaDevicesInfoインタフェースは1つメディアが入力か出力のデバイスであるかを示す情報を含みます。navigator.mediaDevices.enumerateDevices()の呼び出しによって取得できるデバイスの一覧は、MediaDeviceInfoオブジェクトの配列であり、1つの要素が1つのメディアデバイスになります。

プロパティ

MediaDeviceInfo.deviceId読取専用
デバイスの識別子のDOMStringを返します。この識別子はセッションを越えて保持されます。この識別子は、他のアプリケーションから推測可能でないものであり、呼び出しているアプリケーション元に対して固有のものになります。この識別子は、ユーザがクッキー(プライベートブラウジングでは異なる識別子が使用され、セッションを越えて保持されません)をクリアした時にリセットされます。
MediaDeviceInfo.groupId読取専用
グループ識別子のDOMStringを返します。2つのデバイスが同一のグループ識別子を持つ場合、それらのデバイスは同一の物理デバイスに属していることになります。例として、内蔵カメラとマイクロフォンを持つモニターなど。
MediaDeviceInfo.kind読取専用
"videoinput""audioinput" 、"audiooutput"のどれかを返します。
MediaDeviceInfo.label読取専用
デバイスを説明するラベルであるDOMStringを返します。(例、"External USB Webcam")

セキュリティ的な関係で、アクティブなメディアストリームが存在するか、メディアデバイスへの継続的な権限をユーザが付与しない限り、labelのフィールドは常に空欄になります。デバイスラベルの組み合わせによって、ユーザを識別するためのフィンガープリントの一部として利用することができてしまいます。

メソッド

なし。

ここでは、デバイスの一覧を取得するために、enumerateDevices()を使用しています。

if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
  console.log("enumerateDevices() not supported.");
  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 + ": " + error.message);
});

コンソールには次のように表示されるでしょう。

videoinput: id = csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: id = RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: id = r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=

もしくは、1つ以上のメディアストリームが有効の場合や、継続的な許可が与えられている場合は、次のように表示されるでしょう。

videoinput: FaceTime HD Camera (Built-in) id=csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: default (Built-in Microphone) id=RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: Built-in Microphone id=r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=

仕様

仕様 状況 コメント
Media Capture and Streams
MediaDevicesInfo の定義
勧告候補 初版

ブラウザ互換性

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 手助けしていただける場合は、こちらから!

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 55.0[1] (有) 39 未サポート ?[2] 未サポート
Feature Android Android Webview Edge Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support 未サポート ? (有) 39 2.5 未サポート ?[2] 未サポート ?

[1] 早期のバージョンでは、adapter.js ポリフィルを通してこのインタフェースは使用できます。

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

関連項目

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

タグ: 
このページの貢献者: dai, e53e04ac
最終更新者: dai,