WebAudioContext.createBufferSource()

微信小程序插件:不支持

功能描述

创建一个 BufferSourceNode 实例,通过 AudioBuffer 对象来播放音频数据。

返回值

BufferSourceNode

示例代码


const audioCtx = wx.createWebAudioContext()

const loadAudio = (url) => {
  return new Promise((resolve) => {
    wx.request({
      url,
      responseType: 'arraybuffer',
      success: res => {
        console.log('res.data', res.data)
        audioCtx.decodeAudioData(res.data, buffer => {
          resolve(buffer)
        }, err => {
          console.error('decodeAudioData fail', err)
          reject()
        })
      },
      fail: res => {
        console.error('request fail', res)
        reject()
      }
    })
  })
}

const play = () => {
  loadAudio('xxx-test.mp3').then(buffer => {
    let source = audioCtx.createBufferSource()
    source.buffer = buffer
    source.connect(audioCtx.destination)
    source.start()
  }).catch(() => {
    console.log('fail')
  })
}

play()

WebAudioContext.createBuffer 创建音频缓冲区

微信小程序插件:不支持

功能描述

创建一个AudioBuffer,代表着一段驻留在内存中的短音频

参数

number numOfChannels

定义了 buffer 中包含的声频通道数量的整数

number length

代表 buffer 中的样本帧数的整数

number sampleRate

线性音频样本的采样率,即每一秒包含的关键帧的个数

返回值

AudioBuffer

buffer 返回一个AudioBuffer实例

示例代码

示例代码


const audioCtx = wx.createWebAudioContext()
const channels = 2, frameCount = audioCtx.sampleRate * 2.0
const myArrayBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate)

WebAudioContext.createAnalyser()

基础库 2.22.0 开始支持,低版本需做兼容处理。

微信小程序插件:不支持

功能描述

创建一个 AnalyserNode。可以用来获取音频时间和频率数据,以及实现数据可视化。

返回值

AnalyserNode

示例代码

示例代码


const audioCtx = wx.createWebAudioContext();
const analyser = audioCtx.createAnalyser();
analyser.fftSize = 2048;
const bufferLength = analyser.fftSize;
const dataArray = new Uint8Array(bufferLength);
analyser.getByteTimeDomainData(dataArray);

Promise WebAudioContext.close()

微信小程序插件:不支持

功能描述

关闭WebAudioContext

返回值

Promise

注意事项

同步关闭对应的WebAudio上下文。close后会立即释放当前上下文的资源,不要在close后再次访问state属性。

const audioCtx = wx.createWebAudioContext()
audioCtx.close().then(() => {
  console.log(audioCtx.state) // bad case:不应该在close后再访问state
})

WebAudioContext

基础库 2.19.0 开始支持,低版本需做兼容处理。

WebAudioContext 实例,通过wx.createWebAudioContext 接口获取该实例。

属性

string state

当前WebAudio上下文的状态。可能的值如下:suspended(暂停)、running(正在运行)、closed(已关闭)。需要注意的是,不要在 audioContext close后再访问state属性

function onstatechange

可写属性,开发者可以对该属性设置一个监听函数,当WebAudio状态改变的时候,会触发开发者设置的监听函数。

number currentTime

获取当前上下文的时间戳。

WebAudioContextNode destination

当前上下文的最终目标节点,一般是音频渲染设备。

AudioListener listener

空间音频监听器。

number sampleRate

采样率,通常在8000-96000之间,通常44100hz的采样率最为常见。

方法

Promise WebAudioContext.close()

关闭WebAudioContext

Promise WebAudioContext.resume()

同步恢复已经被暂停的WebAudioContext上下文

Promise WebAudioContext.suspend()

同步暂停WebAudioContext上下文

IIRFilterNode WebAudioContext.createIIRFilter(Array. feedforward, Array. feedback)

创建一个IIRFilterNode

WaveShaperNode WebAudioContext.createWaveShaper()

创建一个WaveShaperNode

ConstantSourceNode WebAudioContext.createConstantSource()

创建一个ConstantSourceNode

OscillatorNode WebAudioContext.createOscillator()

创建一个OscillatorNode

GainNode WebAudioContext.createGain()

创建一个GainNode

PeriodicWaveNode WebAudioContext.createPeriodicWave(Float32Array real, Float32Array imag, object constraints)

创建一个PeriodicWaveNode

BiquadFilterNode WebAudioContext.createBiquadFilter()

创建一个BiquadFilterNode

BufferSourceNode WebAudioContext.createBufferSource()

创建一个BufferSourceNode实例,通过AudioBuffer对象来播放音频数据。

ChannelMergerNode WebAudioContext.createChannelMerger(number numberOfInputs)

创建一个ChannelMergerNode

ChannelSplitterNode WebAudioContext.createChannelSplitter(number numberOfOutputs)

创建一个ChannelSplitterNode

DelayNode WebAudioContext.createDelay(number maxDelayTime)

创建一个DelayNode

DynamicsCompressorNode WebAudioContext.createDynamicsCompressor()

创建一个DynamicsCompressorNode

ScriptProcessorNode WebAudioContext.createScriptProcessor(number bufferSize, number numberOfInputChannels, number numberOfOutputChannels)

创建一个ScriptProcessorNode

AnalyserNode WebAudioContext.createAnalyser()

创建一个 AnalyserNode 。可以用来获取音频时间和频率数据,以及实现数据可视化。

PannerNode WebAudioContext.createPanner()

创建一个PannerNode

AudioBuffer WebAudioContext.createBuffer(number numOfChannels, number length, number sampleRate)

创建一个AudioBuffer,代表着一段驻留在内存中的短音频

AudioBuffer WebAudioContext.decodeAudioData(ArrayBuffer audioData, function successCallback, function errorCallback)

异步解码一段资源为AudioBuffer。

示例代码

// 监听状态
const audioCtx = wx.createWebAudioContext()
audioCtx.onstatechange = () => {
  console.log(ctx.state)
}
setTimeout(audioCtx.suspend, 1000)
setTimeout(audioCtx.resume, 2000)