web-audio 播放音频

示例

要使用Web Audio API播放音频,我们需要获取音频数据的ArrayBuffer并将其传递给BufferSource进行播放。

要获得播放声音的音频缓冲区,您需要使用如下AudioContext.decodeAudioData方法:

const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
// 从服务器获取MP3文件
fetch("sound/track.mp3")
    // 将数据作为ArrayBuffer返回
    .then(response => response.arrayBuffer())
    // 解码音频数据
    .then(buffer => audioCtx.decodeAudioData(buffer))
    .then(decodedData => {
        // ...
    });

最终承诺解决后,系统会以的形式为您提供音频AudioBuffer。然后可以将其附加到AudioBufferSourceNode-并播放-,如下所示:

const source = context.createBufferSource();
source.buffer = decodedData; // <==
source.start(...);

Where具有三个参数,分别偏移何时播放样本,偏移样本中从何处播放以及告诉播放样本多长时间。.start()

可在MDN上找到有关如何操作缓冲区源的更多信息。