AudioContext:sinkId 属性
AudioContext
接口的 sinkId
只读属性返回当前输出音频设备的接收器 ID。
价值
此属性将返回以下值之一,具体取决于接收器 ID 的设置方式
- 空字符串
-
如果未显式设置接收器 ID,则将使用默认系统音频输出设备,并且
sinkId
将返回空字符串。 - 字符串
-
如果接收器 ID 设置为字符串值(使用
setSinkId()
或sinkId
AudioContext()
构造函数选项),sinkId
将返回相同的字符串值。 - 一个
AudioSinkInfo
对象 -
如果接收器 ID 设置为选项对象(使用
setSinkId()
或sinkId
AudioContext()
构造函数选项),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 |
浏览器兼容性
BCD 表格仅在浏览器中加载