播放多个连续音频文件后延迟

时间:2013-12-20 22:51:38

标签: javascript audio html5-audio web-audio playing

我目前正在开发一种对讲机型环境。现在录制和重新采样音频工作正常(感谢帮助),播放作品..等等。

我的数据来自(WAV-)blob,所以这就是我所做的:

audioPlay(blob)
{
        var fileReader = new FileReader();
        fileReader.onload = function() {
                theContext.decodeAudioData(this.result, function(buffer) {
                        var source = theContext.createBufferSource(); 
                        source.buffer = buffer;
                        source.connect(theContext.destination);
                        source.start(0);
                        });
                };
        fileReader.readAsArrayBuffer(blob);
}

但是每一个新音频都会增加一个轻微的启动延迟,随着每个新音频的增加而增加。经过一些音频后,延迟增加了近2-3秒。记录没有显示任何延迟,程序流程一直很好。直到.source.start。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

不要为每个样本以0开始播放。而是追踪时间。

 if (nextTime == 0) { nextTime = context.currentTime }
 source.start(nextTime);
 nextTime+=source.buffer.duration; 

答案 1 :(得分:0)

Michaela,这听起来更像它可能是源中的一个问题 - 你确定每个传入的blob是正确的(正确的长度,并且在开始时有音频吗?)似乎你可能只是在此结束时将新记录添加到空缓冲区的末尾。除非遇到这个具体问题,否则我会看一下即将发布的音频blob - 由于某些原因,解码可能过于昂贵? (即,如果你有2-3秒的累积延迟,你应该能够通过记录来判断延迟是在接收数据,解码它还是在缓冲区本身。