6
這裏發生了一些奇怪的事情。 我在一個變量創建音頻緩衝存儲器中,並嘗試重新使用它幾次 - 但它似乎已損壞網絡音頻緩衝區奇怪的行爲
我做一些按鈕
<button onclick="play();">play(0)</button>
<button onclick="playsection();">play section</button>
<button onclick="stop();">stop()</button>
得到一些音頻數據
context = new AudioContext();
var getWav = new XMLHttpRequest();
var wavbuf;
getWav.open("GET", "/wav/test.wav", true);
getWav.responseType = "arraybuffer";
getWav.onload = function() {
context.decodeAudioData(getWav.response, function(buffer){
wavbuf = buffer;
});
}
getWav.send();
var p;
我可以評估播放()多次沒有錯誤
function play(){
p = context.createBufferSource();
p.buffer = wavbuf;
p.connect(context.destination);
p.start(0);
}
playsection似乎只有一次工作 - 或者偶爾不止一次,如果 我按以前站停車(10)計算
function playsection(){
p = context.createBufferSource();
p.buffer = wavbuf;
p.connect(context.destination);
p.start(0, 6); // start after 6 seconds
p.stop(10); // stop after 10 seconds
}
function stop(){
p.stop();
}
好像p.buffer = wavbuf創建一個指針到緩衝區,而不是一個副本
這是錯誤還是功能?
是的 - 謝謝這是在https://webaudio.github.io/web-audio-api/#the-audi的規範部分2.10.2 obuffer接口 –