BaseAudioContext - 作为在线和离线音频处理图的基本定义
BaseAudioContext
是 Web Audio API 的接口,作为在线和离线音频处理图的基本定义,分别由 AudioContext
和 OfflineAudioContext
表示。您不会直接使用 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.suspend
,AudioContext.resume
或 AudioContext.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
之后,从 XMLHttpRequest
的 response
属性中加载 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 的定义 |
工作草案 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | ≤18 | 53 | 不支持 | 22 15 webkit | 6 webkit |
audioWorklet | 66 | ≤79 | 未知 | 不支持 | 支持 | 未知 |
createAnalyser | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createBiquadFilter | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createBuffer | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createBufferSource | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createChannelMerger | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createChannelSplitter | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createConstantSource | 56 | ≤79 | 53 | 不支持 | 43 | 支持 |
createConvolver | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createDelay | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createDynamicsCompressor | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createGain | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createIIRFilter | 49 | ≤18 | 533 | 不支持 | 支持 | 未知 |
createOscillator | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createPanner | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createPeriodicWave | 595 57 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createScriptProcessor | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
createStereoPanner | 42 | ≤18 | 536 | 不支持 | 不支持 | 不支持 |
createWaveShaper | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
currentTime | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
decodeAudioData | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
destination | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
listener | 10 webkit | ≤18 | 53 | 不支持 | 22 15 webkit | 6 webkit |
onstatechange | 43 | ≤79 | 538 | 不支持 | 支持 | 未知 |
sampleRate | 10 webkit | ≤18 | 531 | 不支持 | 22 15 webkit | 6 webkit |
state | 43 | ≤79 | 538 | 不支持 | 支持 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 未知 | 53 | 未知 | 22 14 webkit | 不支持 |
audioWorklet | 66 | 66 | 未知 | 未知 | 未知 | 支持 | 不支持 |
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 | 不支持 |
createConstantSource | 56 | 56 | 未知 | 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 | 不支持 |
createIIRFilter | 49 | 49 | 未知 | 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
上实现。