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

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
setSinkId

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

参见