我目前正在開發對講機類型的環境。錄製和重新採樣音頻現在工作正常(感謝您的幫助),播放作品......有點。播放多個連續音頻文件後延遲
我的數據來自於(WAV的)斑點,所以這裏就是我做什麼:
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。
任何想法?
Thanks @Brad will try that and report雖然恕我直言,它沒有任何意義,因爲我創建了新的緩衝區和新的source.connects - 完全獨立的進程 –
'audioPlay'內有兩個連續的異步操作,'fileReader.onload'事件回調是異步和'decodeAudioData'是異步的,你真的不能對這種方式有任何期望,因此調用'source.start(0)'不起作用。 –
@KevinEnnis我不關注你。不要期望有任何準確或可預測的時間,我假設在onload完成並且decodeAudioData完成後(pcm數據在緩衝區中可用並準備播放)立即開始。我們正在談論最小的獨立樣本,最多100K。第一個樣本的工作原理就是如此,在後續樣本中增加了一小部分延遲 - 在4或5個樣本之後加上一秒左右,等等。 –