AudioContext:sinkId 屬性
AudioContext 介面的只讀屬性 sinkId 返回當前輸出音訊裝置的接收器 ID。
值
此屬性根據接收器 ID 的設定方式返回以下值之一:
- 空字串
-
如果未顯式設定接收器 ID,將使用預設的系統音訊輸出裝置,並且
sinkId將返回空字串。 - 字串
-
如果接收器 ID 設定為字串值(使用
setSinkId()或sinkIdAudioContext()建構函式選項),則sinkId將返回相同的字串值。 - 一個
AudioSinkInfo物件 -
如果接收器 ID 設定為選項物件(使用
setSinkId()或sinkIdAudioContext()建構函式選項),則sinkId將返回一個AudioSinkInfo物件,反映初始選項物件中設定的相同值。
示例
在我們 SetSinkId 測試示例(請檢視 原始碼)中,我們建立了一個音訊圖,透過 AudioBufferSourceNode 生成三秒的白噪聲,並將其透過 GainNode 來稍微降低音量。我們還為使用者提供了一個下拉選單,允許他們更改音訊輸出裝置。
當點選“播放”按鈕時,我們組裝音訊圖並開始播放,同時根據 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("Audio playing on default device");
} else if (
typeof audioCtx.sinkId === "object" &&
audioCtx.sinkId.type === "none"
) {
console.log("Audio not playing on any device");
} else {
console.log(`Audio playing on device ${audioCtx.sinkId}`);
}
});
規範
| 規範 |
|---|
| Web Audio API # dom-audiocontext-sinkid |
瀏覽器相容性
載入中…