HTMLMediaElement:setSinkId() 方法

安全上下文: 此项功能仅在一些支持的浏览器安全上下文(HTTPS)中可用。

HTMLMediaElement 接口的 setSinkId() 方法设置要用于音频输出的设备 ID,并返回一个 Promise

只有当应用程序被允许使用指定的设备时,此方法才有效。有关更多信息,请参阅下面的安全要求

语法

js
setSinkId(sinkId)

参数

sinkId

音频输出设备的 MediaDeviceInfo.deviceId

返回值

一个 Promise,其会兑现 undefined

异常

NotAllowedError DOMException

如果使用 speaker-selection 权限策略来阻止使用音频输出,则会返回此错误。

NotFoundError DOMException

如果 deviceId 不匹配任何音频输出设备,则会返回此错误。

AbortError DOMException

如果切换到新的音频设备的音频输出设备失败,则会返回此错误。

安全要求

对此 API 的访问受以下约束:

示例

此示例展示了如何从 MediaDevices.enumerateDevices() 返回的设备数组中选择一个音频输出设备,并将其设置为音频的输出目标。请注意,enumerateDevices() 的结果仅包括无需用户权限或已经授予权限的设备。

js
const devices = await navigator.mediaDevices.enumerateDevices();
const audioDevice = devices.find((device) => device.kind === "audiooutput");
const audio = document.createElement("audio");
await audio.setSinkId(audioDevice.deviceId);
console.log(`音频被输出到 ${audio.sinkId}`);

规范

Specification
Audio Output Devices API
# dom-htmlmediaelement-setsinkid

浏览器兼容性

BCD tables only load in the browser

参见