AudioContext:AudioContext() 构造函数
AudioContext()
构造函数创建一个新的 AudioContext
对象,该对象表示一个音频处理图,该图由链接在一起的音频模块构建,每个模块都由一个 AudioNode
表示。
语法
new AudioContext()
new AudioContext(options)
参数
options
可选-
用于配置上下文的对象。可用的属性为
latencyHint
可选-
上下文将用于的播放类型,作为预定义字符串(
"balanced"
、"interactive"
或"playback"
)或表示上下文首选最大延迟(以秒为单位)的双精度浮点数。用户代理可能会也可能不会选择满足此请求;检查AudioContext.baseLatency
的值以确定创建上下文后的真实延迟。"balanced"
:浏览器在选择延迟值时平衡音频输出延迟和功耗。-
"interactive"
(默认值):音频参与交互元素,例如响应用户操作或需要与视频或游戏操作等视觉提示相吻合。浏览器选择不会导致音频出现故障的尽可能低的延迟。这可能需要增加功耗。 -
"playback"
:浏览器选择一个延迟,该延迟将通过以延迟为代价最小化功耗来最大化播放时间。适用于非交互式播放,例如播放音乐。
sampleRate
可选-
指示要用于新上下文的采样率。该值必须是表示采样率(以每秒样本数为单位)的浮点数,用于配置新上下文;此外,该值必须是
AudioBuffer.sampleRate
支持的值。该值通常介于 8,000 Hz 和 96,000 Hz 之间;默认值会因输出设备而异,但 44,100 Hz 的采样率最常见。如果sampleRate
属性未包含在选项中,或者在创建音频上下文时未指定选项,则默认使用新上下文的输出设备的首选采样率。 sinkId
可选 实验性-
指定要用于
AudioContext
的音频输出设备的接收器 ID。这可以采用以下值类型之一- 表示接收器 ID 的字符串,例如通过
MediaDeviceInfo
对象的deviceId
属性检索,这些对象由MediaDevices.enumerateDevices()
返回。 - 表示接收器 ID 的不同选项的对象。目前,这采用单个属性
type
,其值为none
。设置此参数会导致音频进行处理,但不会通过任何音频输出设备播放。
- 表示接收器 ID 的字符串,例如通过
返回值
一个新的 AudioContext
实例。
异常
NotSupportedError
DOMException
-
如果指定的
sampleRate
不受上下文支持,则抛出。
使用说明
规范没有详细介绍用户代理应支持多少个音频上下文,或者(如果有)最小或最大延迟要求等内容,因此这些细节在不同的浏览器之间可能会有所不同。如果这些细节对您很重要,请务必检查其值。
特别是,规范没有指示必须能够同时打开的最大或最小音频上下文数量,因此这留给浏览器实现来决定。
Google Chrome
Chrome 中的每个标签页音频上下文限制
在 66 版之前,Google Chrome 每次最多仅支持 6 个音频上下文每个标签页。
Chrome 中的非标准异常
如果 latencyHint
属性的值无效,Chrome 会抛出一个 TypeError
异常,消息为“提供的 value '...' 不是 type AudioContextLatencyCategory 的有效枚举值”。
示例
此示例为交互式音频(针对延迟进行优化)创建一个新的 AudioContext
,采样率为 44.1kHz,并使用特定的音频输出。
const audioCtx = new AudioContext({
latencyHint: "interactive",
sampleRate: 44100,
sinkId: "bb04fea9a8318c96de0bd...", // truncated for brevity
});
规范
规范 |
---|
Web Audio API # dom-audiocontext-audiocontext |
浏览器兼容性
BCD 表仅在浏览器中加载