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 の文字列のはずなので、記録します。
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} で再生されています`);
}
});
仕様書
Specification |
---|
Web Audio API # dom-audiocontext-sinkid |
ブラウザーの互換性
BCD tables only load in the browser