AudioContext: sinkId プロパティ
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
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> |
ブラウザーの互換性
Loading…