我有一個很奇怪的問題:播放Web Audio API使用很慢
我打一個wav與網絡音頻API的方式如下:
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;
這工作完全正常,但現在播放速度很慢...
我沒有改變任何代碼。唯一改變的是我最近將我的操作系統從Windows 7改爲Windows 8.1。 與這個問題有任何關係嗎?
我在Chrome和Firefox中試過它,它們都有相同的行爲。
感謝您的幫助!
編輯:
我送浮點值到客戶端,因爲正如我在this thread學到的網絡音頻API需要一個1之間浮動-1值來處理音頻數據正確。 當我刪除浮點值並開始再次發送PCM數據時,播放速度正常。它再次充滿了噪音,但速度是正常的...
我真的很感激任何輸入,可能會幫助我弄清楚這個奇怪的問題。
謝謝!這是抽樣率......但並不如我預期的那樣。有接縫是我的聲卡/ sounddrivers的問題...我不得不將我的輸出設備中的採樣率增加到88200.您是否知道爲什麼只有網絡音頻API接口與驅動程序有問題? – metabolic
Chrome和Firefox都使用默認的音頻輸出設備採樣率,因此有必要使代碼適應任何採樣率。你確定你的音源不是交錯立體聲嗎?你是否檢查過你的源代碼樣本的大小?它是32位還是16位? – padenot