このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

AudioContext: sinkId プロパティ

利用可能性は限定的

この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

sinkId は AudioContext インターフェイスの読み取り専用プロパティで、現在の音声出力機器のシンク ID を返します。

値

このプロパティは、どのようにシンク ID が設定されているかにより、以下の値のいずれかを返します。

空文字列

シンク ID が明示的に設定されていない場合、デフォルトのシステム音声出力機器が用いられ、sinkId は空文字列を返します。

文字列

シンク ID が(setSinkId() を用いるか、AudioContext() コンストラクターのオプション sinkId を用いて)文字列として設定されている場合、sinkId は同じ文字列を返します。

AudioSinkInfo オブジェクト

シンク ID が(setSinkId() を用いるか、AudioContext() コンストラクターのオプション sinkId を用いて)オプションオブジェクトとして設定されている場合、sinkId は最初のオプションオブジェクトで設定された値と同じ値を持つ AudioSinkInfo オブジェクトを返します。

例

SetSinkId test example では、AudioBufferSourceNode により 3 秒間のホワイトノイズを生成し、GainNode を通して少し音量を下げる音声グラフを作成します。さらに、ユーザーが音声出力機器を変えることができるドロップダウンメニューを提供します。

Play ボタンがクリックされると、音声グラフを組み立て、再生を開始し、sinkId の値に基づいて現在の機器の情報を記録します。これは以下のような動作になります。

  • 空文字列は、まだ既定の機器が使われていることを表します。
  • 値がオブジェクトである場合は、type: 'none' が格納されたオプションオブジェクトを設定しているため、音声はどの機器でも再生されません。
  • それ以外の場合は、値はシンク ID の文字列のはずなので、記録します。
js
playBtn.addEventListener("click", () => {
  const source = audioCtx.createBufferSource();
  source.buffer = myArrayBuffer;
  source.connect(gain);
  gain.connect(audioCtx.destination);
  source.start();

  if (audioCtx.sinkId === "") {
    console.log("音声は既定の機器で再生されています");
  } else if (
    typeof audioCtx.sinkId === "object" &&
    audioCtx.sinkId.type === "none"
  ) {
    console.log("音声はどの機器でも再生されていません");
  } else {
    console.log(`音声は機器 ${audioCtx.sinkId} で再生されています`);
  }
});

仕様書

仕様書
Web Audio API
# dom-audiocontext-sinkid

ブラウザーの互換性

関連情報