HTMLMediaElement:setSinkId() 方法
HTMLMediaElement
接口的 setSinkId()
方法设置要用于音频输出的设备 ID,并返回一个 Promise
。
只有当应用程序被允许使用指定的设备时,此方法才有效。有关更多信息,请参阅下面的安全要求。
语法
js
setSinkId(sinkId)
参数
sinkId
-
音频输出设备的
MediaDeviceInfo.deviceId
。
返回值
异常
NotAllowedError
DOMException
-
如果使用
speaker-selection
权限策略来阻止使用音频输出,则会返回此错误。 NotFoundError
DOMException
-
如果
deviceId
不匹配任何音频输出设备,则会返回此错误。 AbortError
DOMException
-
如果切换到新的音频设备的音频输出设备失败,则会返回此错误。
安全要求
对此 API 的访问受以下约束:
- 方法必须在安全上下文中调用。
- 访问可能受
speaker-selection
HTTP 权限策略的控制。 - 需要用户的授权才能访问非默认设备。用户通过在
MediaDevices.selectAudioOutput()
显示的提示中选择与 ID 相关联的设备来授予权限。
示例
此示例展示了如何从 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