WebAudioContext.createDynamicsCompressor() 动态压缩节点

微信小程序插件:不支持

功能描述

创建一个 DynamicsCompressorNode(动态压缩节点)

返回值

DynamicsCompressorNode

示例代码

示例代码


let audioCtx = wx.createWebAudioContext()
let compressor = audioCtx.createDynamicsCompressor()

compressor.threshold.value = -50
compressor.knee.value = 40
compressor.ratio.value = 12
compressor.attack.value = 0
compressor.release.value = 0.25

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
})