要使用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上找到有关如何操作缓冲区源的更多信息。