Streaming 前两个音频块同时播放

Streaming 前两个音频块同时播放,streaming,web-audio-api,Streaming,Web Audio Api,我正在使用WebAudioAPI从服务器播放流。我是这样做的: var d2 = new DataView(evt.data); var data = new Float32Array(d2.byteLength / Float32Array.BYTES_PER_ELEMENT); for (var jj = 0; jj < data.length; ++jj) { data[jj] = d2.getFloat32(jj * Float32Arra

我正在使用WebAudioAPI从服务器播放流。我是这样做的:

    var d2 = new DataView(evt.data);

    var data = new Float32Array(d2.byteLength / Float32Array.BYTES_PER_ELEMENT);
    for (var jj = 0; jj < data.length; ++jj) {
        data[jj] = d2.getFloat32(jj * Float32Array.BYTES_PER_ELEMENT, true);
    }

    var buffer = context.createBuffer(1, data.length, 44100);
    buffer.getChannelData(0).set(data);

    source = context.createBufferSource();
    source.buffer = buffer;
    source.start(startTime);
    source.connect(context.destination);

    startTime += buffer.duration;
var d2=新数据视图(evt.data);
var data=新的Float32Array(d2.byteLength/Float32Array.BYTES\u/元素);
对于(var jj=0;jj
startime用0初始化。 这很好,但对我来说,前几块是同时播放的。。。 这大约需要1秒钟,然后音频正常播放

有人知道为什么会这样吗?
谢谢,谢谢

不应使用0初始化startTime,应使用context.currentTime初始化它。实际上,可能是currentTime+slop的一些轻微延迟

上下文时钟在创建上下文后立即开始。我猜在创建上下文和播放第一个块的时间之间有一点差距,所以它试图在过去播放它,并且它只是尽快播放它。下一个或两个片段出现,同样的事情-在那之后,我希望它会稳定到一个可预测的模式,或者(更可能)你总是试图从过去的时间开始(),所以它会尽快播放,而你不会听到边界上的小故障