我正在尝试从 URL 加载音频缓冲区,然后播放它。我从这个HTML5 Rocks Tutorial获得了大部分代码。
var request = new XMLHttpRequest();
request.open('GET', $(this).attr('data-url'), true);
request.responseType = 'arraybuffer';
request.onload = function() {
console.log(request);
context.decodeAudioData(request.response, function(buffer) {
console.log(buffer);
$('#play').click(function() {
var source = context.createBufferSource();
source.connect(context.destination);
source.noteOn(0);
}).removeAttr('disabled');
}, function(err) { console.log(err); });
};
request.send();
但是,然后我按下#play
按钮,没有任何反应。source.noteOn(0)
被调用,我使用调试器检查了它。并且所有对象都已正确加载和创建,但我听不到任何声音。
此外,看起来,当我使用这种方法时,我需要重建一个具有所有控件的完整播放器。我想做的,为了节省工作并确保它更好地工作,就是把它buffer
放入一个<audio/>
,所以它可以在那里播放。
我知道audio.src
可以将文件名放在那里,但我需要使用音频缓冲区。我试过了
audio.src = buffer;
audio.load()
但这没有用。
那里有什么资料吗?