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 |
浏览器兼容性
加载中…