MediaDeviceInfo

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.

MediaDeviceInfo インターフェイスは、単一のメディア入力または出力機器を示す情報を持ちます。

navigator.mediaDevices.enumerateDevices() の呼び出しによって取得できる機器の一覧は、MediaDeviceInfo オブジェクトの配列であり、1 つのメディア機器が 1 つに対応します。

インスタンスプロパティ

MediaDeviceInfo.deviceId 読取専用

文字列で、セッションをまたいで維持される機器を表す識別子を返します。他のアプリケーションからは推測できず、呼び出されたアプリケーションのオリジンで固有のものです。ユーザーがクッキーを消去するとリセットされます(プライベートブラウジングの場合は、セッションをまたいで維持されない異なる識別子を使用します)。

MediaDeviceInfo.groupId 読取専用

文字列で、グループ識別子を返します。2 つの機器が同一のグループ識別子を持つ場合、それらの機器は同一の物理機器に属していることになります。例えば、モニターに内蔵カメラとマイクが付いている場合などです。

MediaDeviceInfo.kind 読取専用

"videoinput""audioinput""audiooutput" の何れかの列挙値を返します。

MediaDeviceInfo.label 読取専用

この機器を記述する文字列を返します(例えば "External USB Webcam")。

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

インスタンスメソッド

MediaDeviceInfo.toJSON()

この MediaDeviceInfo オブジェクトの JSON 表現を返します。

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

js
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
  console.log("enumerateDevices() not supported.");
} else {
  // カメラとマイクを一覧にする。
  navigator.mediaDevices
    .enumerateDevices()
    .then((devices) => {
      devices.forEach((device) => {
        console.log(`${device.kind}: ${device.label} id = ${device.deviceId}`);
      });
    })
    .catch((err) => {
      console.log(`${err.name}: ${err.message}`);
    });
}

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

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

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

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

仕様書

Specification
Media Capture and Streams
# device-info

ブラウザーの互換性

BCD tables only load in the browser

関連項目