Audio web音频缓冲区异常行为

Audio web音频缓冲区异常行为,audio,web,buffer,web-audio-api,Audio,Web,Buffer,Web Audio Api,这里发生了奇怪的事情。 我创建了一个音频缓冲区,将其存储在一个变量中,并尝试多次重复使用,但它似乎已损坏 我做一些钮扣 <button onclick="play();">play(0)</button> <button onclick="playsection();">play section</button> <button onclick="stop();">stop()</button> 我

这里发生了奇怪的事情。 我创建了一个音频缓冲区,将其存储在一个变量中,并尝试多次重复使用,但它似乎已损坏

我做一些钮扣

    <button onclick="play();">play(0)</button>
    <button onclick="playsection();">play section</button>
    <button onclick="stop();">stop()</button>
我可以多次计算play(),但没有错误

function play(){
    p = context.createBufferSource();
    p.buffer = wavbuf;
    p.connect(context.destination);
    p.start(0);
}
PlaySecute似乎只工作一次——或者偶尔不止一次 我在停止(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在缓冲区中创建指针而不是副本


这是一个错误还是一个功能?

因此这很有趣,它将连续播放该部分,或者不停止:

function playsection(){
    p = context.createBufferSource();
    p.buffer = wavbuf;
    p.connect(context.destination);
    p.start(0, 6); // start after 6 seconds 
}
或不带偏移:

function playsection(){
    p = context.createBufferSource();
    p.buffer = wavbuf;
    p.connect(context.destination);
    p.start(0);
    p.stop(10);    // stop after 10 seconds 
}
甚至在开始时声明偏移量和持续时间:

function playsection(){
    p = context.createBufferSource();
    p.buffer = wavbuf;
    p.connect(context.destination);
    p.start(0,6,10);
}

是的-谢谢,它在本规范第2.10.2节中
function playsection(){
    p = context.createBufferSource();
    p.buffer = wavbuf;
    p.connect(context.destination);
    p.start(0,6,10);
}