BaseAudioContext - 作为在线和离线音频处理图的基本定义

BaseAudioContextWeb Audio API 的接口,作为在线和离线音频处理图的基本定义,分别由 AudioContextOfflineAudioContext 表示。您不会直接使用 BaseAudioContext,而是通过这两个继承接口之一使用其功能。

属性

BaseAudioContext.audioWorklet 只读 安全上下文

返回一个 AudioWorklet 对象,该对象可用于创建和管理 AudioNode,其中 JavaScript 代码实现了 AudioWorkletProcessor 接口在后台运行以处理音频数据。

BaseAudioContext.currentTime 只读

返回一个 double,该值表示用于调度的不断增加的硬件时间(以秒为单位)。它从 0 开始。

BaseAudioContext.destination 只读

返回一个 AudioDestinationNode,代表上下文中所有音频的最终目标。可以将其视为音频渲染设备。

BaseAudioContext.listener 只读

返回一个 AudioListener 对象,用于 3D 空间化。

BaseAudioContext.sampleRate 只读

返回一个 float,该浮点数表示此上下文中所有节点使用的采样率(以每秒采样数为单位)。 AudioContext 的采样率无法更改。

BaseAudioContext.state 只读

返回 AudioContext 的当前状态。

事件处理程序

BaseAudioContext.onstatechange

当事件类型为 statechange 的事件触发时运行的事件处理程序。由于调用状态更改方法(AudioContext.suspendAudioContext.resumeAudioContext.close)而导致 AudioContext 的状态更改时,会发生这种情况。

方法

还从接口 EventTarget 实现了方法。

BaseAudioContext.createAnalyser()

创建一个 AnalyserNode,可用于显示音频时间和频率数据,例如用于创建数据可视化。

BaseAudioContext.createBiquadFilter()

创建一个 BiquadFilterNode,它表示可配置为几种不同的常见滤波器类型的二阶滤波器:高通(“high-pass”),低通(“low-pass”),带通(“band-pass”)等

BaseAudioContext.createBuffer()

创建一个新的空 AudioBuffer 对象,然后可以将其填充数据并通过 AudioBufferSourceNode 播放。

BaseAudioContext.createBufferSource()

创建一个 AudioBufferSourceNode,可用于播放和操作 AudioBuffer 对象中包含的音频数据。 AudioBuffer 是使用 AudioContext.createBuffer 创建的,或者是 AudioContext.decodeAudioData 成功解码音轨后返回的。

BaseAudioContext.createConstantSource()

创建一个 ConstantSourceNode 对象,该对象是一个音频源,可连续输出其样本都具有相同值的单声道(单声道)声音信号。

BaseAudioContext.createChannelMerger()

创建一个 ChannelMergerNode,用于将来自多个音频流的通道合并为一个音频流。

BaseAudioContext.createChannelSplitter()

创建一个 ChannelSplitterNode,用于访问音频流的各个通道并分别处理它们。

BaseAudioContext.createConvolver()

创建一个 ConvolverNode,可用于将卷积效果应用于音频图,例如混响效果。

BaseAudioContext.createDelay()

创建一个 DelayNode,用于将传入的音频信号延迟一定量。此节点对于在 Web Audio API 图形中创建反馈循环也很有用。

BaseAudioContext.createDynamicsCompressor()

创建一个 DynamicsCompressorNode,可将其应用于音频信号的声学压缩。

BaseAudioContext.createGain()

创建一个 GainNode,该控件可用于控制音频图的总体音量。

BaseAudioContext.createIIRFilter()

创建一个 IIRFilterNode,它表示可配置为几种不同的常用过滤器类型的二阶过滤器。

BaseAudioContext.createOscillator()

创建一个 OscillatorNode,它表示周期波形。它用于产生音调。

BaseAudioContext.createPanner()

创建一个 PannerNode,用于在 3D 空间中对传入的音频流进行空间化。

BaseAudioContext.createPeriodicWave()

创建一个 PeriodicWave,用于定义一个周期性波形,该波形可用于确定 OscillatorNode 的输出。

BaseAudioContext.createScriptProcessor()

创建一个 ScriptProcessorNode,该代码可用于通过 JavaScript 进行直接音频处理。

BaseAudioContext.createStereoPanner()

创建一个 StereoPannerNode,可用于将立体声声像应用于音频源。

BaseAudioContext.createWaveShaper()

创建一个 WaveShaperNode,用于实现非线性失真效果。

BaseAudioContext.decodeAudioData()

异步解码 ArrayBuffer 中包含的音频文件数据。在这种情况下,通常在将 responseType 设置为 arraybuffer 之后,从 XMLHttpRequestresponse 属性中加载 ArrayBuffer。此方法仅适用于完整文件,而不适用于音频文件的片段。

实例

初始化一个 audioContext

const audioContext = new AudioContext();

跨浏览器版本:

const AudioContext = window.AudioContext || window.webkitAudioContext;
const audioContext = new AudioContext();

const oscillatorNode = audioContext.createOscillator();
const gainNode = audioContext.createGain();
const finish = audioContext.destination;

规范

规范 状态 备注
Web Audio API
BaseAudioContext 的定义
工作草案 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持 支持≤1853 不支持

22

15 webkit

6 webkit
audioWorklet66≤79 未知 不支持 支持 未知
createAnalyser10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createBiquadFilter10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createBuffer10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createBufferSource10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createChannelMerger10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createChannelSplitter10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createConstantSource56≤7953 不支持43 支持
createConvolver10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createDelay10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createDynamicsCompressor10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createGain10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createIIRFilter49≤18533 不支持 支持 未知
createOscillator10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createPanner10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createPeriodicWave

595

57

10 webkit

≤18531 不支持

22

15 webkit

6 webkit
createScriptProcessor10 webkit ≤18531 不支持

22

15 webkit

6 webkit
createStereoPanner42≤18536 不支持 不支持 不支持
createWaveShaper10 webkit ≤18531 不支持

22

15 webkit

6 webkit
currentTime10 webkit ≤18531 不支持

22

15 webkit

6 webkit
decodeAudioData10 webkit ≤18531 不支持

22

15 webkit

6 webkit
destination10 webkit ≤18531 不支持

22

15 webkit

6 webkit
listener10 webkit ≤1853 不支持

22

15 webkit

6 webkit
onstatechange43≤79538 不支持 支持 未知
sampleRate10 webkit ≤18531 不支持

22

15 webkit

6 webkit
state43≤79538 不支持 支持 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持 支持 未知53 未知

22

14 webkit

不支持
audioWorklet6666 未知 未知 未知 支持 不支持
createAnalyser 支持33 未知532 未知

22

14 webkit

不支持
createBiquadFilter 支持33 未知532 未知

22

14 webkit

不支持
createBuffer 支持33 未知532 未知

22

14 webkit

不支持
createBufferSource 支持33 未知532 未知

22

14 webkit

不支持
createChannelMerger 支持33 未知532 未知

22

14 webkit

不支持
createChannelSplitter 支持33 未知532 未知

22

14 webkit

不支持
createConstantSource5656 未知53 未知43 不支持
createConvolver 支持33 未知532 未知

22

14 webkit

不支持
createDelay 支持33 未知532 未知

22

14 webkit

不支持
createDynamicsCompressor 支持33 未知532 未知

22

14 webkit

不支持
createGain 支持33 未知532 未知

22

14 webkit

不支持
createIIRFilter4949 未知534 未知 支持 不支持
createOscillator 支持33 未知532 未知

22

14 webkit

不支持
createPanner 支持33 未知532 未知

22

14 webkit

不支持
createPeriodicWave

595

57

4.4.3 webkit

595

57

33 webkit

未知532 未知

22

14 webkit

不支持
createScriptProcessor 支持33 未知532 未知

22

14 webkit

不支持
createStereoPanner 支持 支持 未知537 未知 不支持 不支持
createWaveShaper 支持33 未知532 未知

22

14 webkit

不支持
currentTime 支持33 未知532 未知

22

14 webkit

不支持
decodeAudioData 支持33 未知532 未知

22

14 webkit

不支持
destination 支持33 未知532 未知

22

14 webkit

不支持
listener 支持33 未知53 未知

22

14 webkit

不支持
onstatechange 支持 支持 未知539 未知 支持 不支持
sampleRate 支持33 未知532 未知

22

14 webkit

不支持
state 支持 支持 未知539 未知 支持 不支持

1. 最初在 Firefox 25 中的 AudioContext 上实现。

2. 最初在 Firefox Android 26 中的 AudioContext 上实现。

3. 最初在 Firefox 50 中的 AudioContext 上实现。

4. 最初在 Firefox Android 50 中的 AudioContext 上实现。

5. 支持默认值

6. 最初在 Firefox 37 中的 AudioContext 上实现。

7. 最初在 Firefox Android 37 中的 AudioContext 上实现。

8. 最初在 Firefox 40 中的 AudioContext 上实现。

9. 最初在 Firefox Android 40 中的 AudioContext 上实现。

相关链接