抖音开放平台Logo
控制台

AudioContext.createBufferSource
收藏
我的收藏

基础库 1.34.0 开始支持本方法,这是一个同步方法。

创建一个新的 AudioBufferSourceNode 节点, 该节点可以播放 AudioBuffer 对象的音频数据。

AudioBuffer 对象可以通过 AudioContext.createBuffer 来创建或者通过 AudioContext.decodeAudioData 成功解码音轨后获取。

前提条件
业务背景
使用限制
注意事项
相关教程

语法

AudioContext.createBufferSource()

参数说明

返回值

类型说明最低支持版本
object1.34.0

代码示例

// 1. 创建一个 AudioContext
const ctx = tt.getAudioContext();

// 2. 创建一个长度为 3s 的正弦波形
const buf = ctx.createBuffer(2, ctx.sampleRate * 3, ctx.sampleRate);
for (let channel = 0; channel < buf.numberOfChannels; channel++) {
  // 获取频道的数据
  const arr = buf.getChannelData(channel);
  for (let i = 0; i < buf.length; i++) {
    // 限制峰值,防止混声溢出
    arr[i] = Math.sin((i / ctx.sampleRate) * 400 * Math.PI * 2) * 0.6;
  }
}
const source = ctx.createBufferSource();
source.buffer = buf;
source.connect(ctx.destination);

source.start();
source.onended = function () {
  console.log("onended called", this);
};