AudioContext
接口表示由音频模块连接而成的音频处理图,每个模块对应一个AudioNode
。AudioContext
可以控制它所包含的节点的创建,以及音频处理、解码操作的执行。做任何事情之前都要先创建AudioContext
对象,因为一切都发生在这个环境之中。
AudioContext
可以是事件源(event target),所以也实现了EventTarget
接口。
属性
AudioContext.currentTime
只读- 以双精度浮点型数字返回硬件调用的秒数,AudioContext一创建就从0开始走,无法停掉、暂停或者重置。
AudioContext.destination
只读- 返回
AudioDestinationNode
对象,表示当前audio context中所有节点的最终节点,一般表示音频渲染设备。 AudioContext.listener
只读- 返回
AudioListener
对象,用于3D音频空间化。 AudioContext.sampleRate
只读- 返回用浮点数表示的采样率,也就是每秒的采样数,同一个AudioContext中的所有节点采样率相同,所以不支持采样率转换。
AudioContext.state
只读- 返回
AudioContext当前状态
. AudioContext.mozAudioChannelType
只读- 被用于返回一个 Firefox OS 设备上
AudioContext
将会播放的音频声道. -
事件处理程序
AudioContext.onstatechange
- 当一个
statechange
事件类型被触发时响应的事件处理程序.AudioContext的状态会因
(AudioContext.suspend
,AudioContext.resume
或者AudioContext.close
)方法的运用而发生改变
Methods
可以实现 EventTarget
接口的方法.
AudioContext.close()
- 关闭一个音频环境, 释放任何正在使用系统资源的音频.
AudioContext.createBuffer()
- 创建一个空的
AudioBuffer
对象, 并且能够通过AudioBufferSourceNode
来进行数据填充和播放. AudioContext.createConstantSource()
- 创建一个
ConstantSourceNode
对象, 它持续输出一个连续的单声道,这些样本都会拥有一个相同的固定值。 AudioContext.createBufferSource()
- 创建一个
AudioBufferSourceNode
对象, 他可以通过AudioBuffer
对象来播放和处理包含在内的音频数据.AudioBuffer
可以通过AudioContext.createBuffer
方法创建或者使用AudioContext.decodeAudioData
方法解码音轨来创建。 AudioContext.createMediaElementSource()
- 创建一个
MediaElementAudioSourceNode
接口来关联HTMLMediaElement
. 这可以用来播放和处理来自<video>
或<audio>
元素的音频. AudioContext.createMediaStreamSource()
- 创建一个
MediaStreamAudioSourceNode
接口来关联可能来自本地计算机麦克风或其他来源的音频流MediaStream
. AudioContext.createMediaStreamDestination()
- 创建一个
MediaStreamAudioDestinationNode
接口来关联可能储存在本地或已发送至其他计算机的MediaStream
音频. AudioContext.createScriptProcessor()
- 创建一个可以通过JavaScript直接处理音频的
ScriptProcessorNode
. AudioContext.createStereoPanner()
- 创建一个使用立体声的音频源
StereoPannerNode
. AudioContext.createAnalyser()
- 创建一个
AnalyserNode
,它可以用来显示音频时间和频率的数据。 AudioContext.createBiquadFilter()
- 创建一个
BiquadFilterNode
,它代表代表一个双二阶滤波器,可以设置几种不同且常见滤波器类型:高通、低通、带通等。 AudioContext.createChannelMerger()
- 创建一个
ChannelMergerNode
,它被用于从多个音频流信道结合成一个单一的音频流。 AudioContext.createChannelSplitter()
- 创建一个
ChannelSplitterNode
,它用于访问的音频流的单独的通道并分别对他们进行处理。 AudioContext.createConvolver()
- 创建一个
ConvolverNode
,它可用于混合效果,比如说混响效果。 AudioContext.createDelay()
- 创建一个
DelayNode
,它可以通过一定量的延迟传入音频信号,它也被用做创建一个反馈回路。 AudioContext.createDynamicsCompressor()
- 创建一个
DynamicsCompressorNode
, 它可用于声学的音频信号的压缩。 AudioContext.createGain()
- 创建一个
GainNode
,它可以控制音频的总音量。 AudioContext.createIIRFilter()
- 创建一个
IIRFilterNode
,它可以将一个二阶滤波器配置为多种不同的通用滤波器类型。 AudioContext.createOscillator()
- 创建一个
OscillatorNode
, 它表示一个周期性波形,基本上来说创造了一个音调. AudioContext.createPanner()
- 创建一个
PannerNode
, 它为音源创建一个3D音源环境。 AudioContext.createPeriodicWave()
- 创建一个
PeriodicWave
, 创建一个用来定义OscillatorNode
的周期波形。 AudioContext.createWaveShaper()
- 创建一个
WaveShaperNode
, 它被用于创建非线性失真效果. AudioContext.createAudioWorker()
- 创建一个
AudioWorkerNode
, 它可以通过使用woker来产生,处理,或直接分析音频. AudioContext.decodeAudioData()
- 从
ArrayBuffer
对象中异步解码音频文件. 在此情况下,这个ArrayBuffer对象通常是通过使用 responseType为arraybuffer类型的XMLHttpRequest
方法来获取的. 该方法只能作用于完整的音频文件. AudioContext.resume()
- 重新启动一个已被暂停的音频环境
AudioContext.suspend()
- 暂停音频内容的进度.暂时停止音频硬件访问和减少在过程中的CPU/电池使用.
已被废弃的方法
AudioContext.createJavaScriptNode()
- 创建一个
JavaScriptNode
, 用于javascript直接处理音频。 这个方法已经被AudioContext.createScriptProcessor()
替代并且废弃。 AudioContext.createWaveTable()
- 创建一个
WaveTableNode
, 用于顶一个周期性波形。 这个方法已经被AudioContext.createPeriodicWave()
替代并且废弃。
例子
简单声明:
var audioCtx = new AudioContext;
跨浏览器的方式:
var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); // declare new audio context // Webkit/blink browser require a prefix, and it needs the window object specifically declared to work in Safari var oscillatorNode = audioCtx.createOscillator(); var gainNode = audioCtx.createGain(); var finish = audioCtx.destination; // etc.
规范
规范 | 状态 | 注释 |
---|---|---|
Web Audio API AudioContext |
Working Draft |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 10.0webkit | 25.0 (25.0) | 未实现 | 15.0webkit | 6.0webkit |
Feature | Android | Firefox for Andriod | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Andriod |
---|---|---|---|---|---|---|
Basic support | ? | 26.0 | ? | ? | ? | 33.0 |