使用XMLHttpRequest加载多个音频文件并将其附加到Web Audio API中播放

时间:2017-03-25 08:51:56

标签: javascript ajax api audio web

我有一个网络,按照确定的顺序加载3个不同的音频文件(每个1秒),然后合并到一个音频缓冲区(一个接一个)

为了演示我想要做的事情,这是示例代码段:

var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioContextApp = new AudioContext();

var buffer1 = audioContextApp.createBufferSource();
var buffer2 = audioContextApp.createBufferSource();
var buffer3 = audioContextApp.createBufferSource();

var request1 = new XMLHttpRequest;
request1.open('GET', URL_FIRST_SOUND, true);
request1.onload = function() {
var undecodedAudio = request1.response;
            audioContextApp.decodeAudioData(undecodedAudio, function(buffer) {
            buffer1.buffer = buffer; 
            });
}
request1.load()

// DO the same thing with request2, request3 to load second and third sound.

现在我不知道如何将这3个音频缓冲区正确地附加到一个中,让用户播放合并后的音频。

1 个答案:

答案 0 :(得分:0)

我自己想出了一个解决方案。当我将每个缓冲区连接到audioContext.destination时,我可以简单地指定第二个音频播放的时间,即当前时间加上第一个AudioBuffer的持续时间。