AudioContext:AudioContext() 构造函数

基线 广泛可用

此功能已得到完善,可在许多设备和浏览器版本上运行。它自以下版本开始在浏览器中可用 2021 年 4 月.

AudioContext() 构造函数创建一个新的 AudioContext 对象,该对象表示一个音频处理图,该图由链接在一起的音频模块构建,每个模块都由一个 AudioNode 表示。

语法

js
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。设置此参数会导致音频进行处理,但不会通过任何音频输出设备播放。

返回值

一个新的 AudioContext 实例。

异常

NotSupportedError DOMException

如果指定的 sampleRate 不受上下文支持,则抛出。

使用说明

规范没有详细介绍用户代理应支持多少个音频上下文,或者(如果有)最小或最大延迟要求等内容,因此这些细节在不同的浏览器之间可能会有所不同。如果这些细节对您很重要,请务必检查其值。

特别是,规范没有指示必须能够同时打开的最大或最小音频上下文数量,因此这留给浏览器实现来决定。

Google Chrome

Chrome 中的每个标签页音频上下文限制

在 66 版之前,Google Chrome 每次最多仅支持 6 个音频上下文每个标签页

Chrome 中的非标准异常

如果 latencyHint 属性的值无效,Chrome 会抛出一个 TypeError 异常,消息为“提供的 value '...' 不是 type AudioContextLatencyCategory 的有效枚举值”。

示例

此示例为交互式音频(针对延迟进行优化)创建一个新的 AudioContext,采样率为 44.1kHz,并使用特定的音频输出。

js
const audioCtx = new AudioContext({
  latencyHint: "interactive",
  sampleRate: 44100,
  sinkId: "bb04fea9a8318c96de0bd...", // truncated for brevity
});

规范

规范
Web Audio API
# dom-audiocontext-audiocontext

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅