2014-04-22 159 views
0

我目前正在創建HTML5音樂編輯程序。 我開始錄製音頻。 我想出瞭如何訪問microphon等。 「Recorder.js」中的代碼對我有所幫助。HTML5 Web Audio API - 錄製聲音臨時

但不寫入.wave文件我想創建一個臨時audiobuffer。 我從「onaudioprocess」事件中的inputtbuffer中獲取了Float32Array,並將它們全部保存在一個Float32Array中。 現在我有一個包含數值的數組,比方說從3秒的記錄。 現在我想創建一個Audiobuffer來播放我錄製的聲音(保存在該陣列中)。

在閱讀([Webaudio API規範])1,但沒有發現任何可能性創建一個現有的Float32Array新的audiobuffer。

也許我在做錯錄音或者我只是盲目的閱讀。 我讀過的其他所有問題都在Recorder.js上鍊接,但我不想先保存文件然後重新加載。

有人知道嗎? 會很棒。

謝謝大家!

回答

0

我對JavaScript很新,但我認爲你的問題與我正在嘗試做的一樣,現在我找到了答案。您可以調用recorder.getBuffer(getBufferCallback)函數,而不用調用recorder.exportWAV函數,如下所示。我希望這有幫助。這個對我有用。

function stopRecording() { 
     recorder.stop(); 
     recorder.getBuffer(getBufferCallback); 

    //recorder.exportWAV(function(s) { 
     //source = window.URL.createObjectURL(s); 
      //audio.src = source; 
     //}); 
} 

function getBufferCallback(buffers) { 
    window.newSource = context.createBufferSource(); 
    window.buffers0 = buffers[0]; /*store the buffers in a variable so you can use them in future*/ 
    window.buffers1 = buffers[1]; 

    var newBuffer = context.createBuffer(2, window.buffers0.length, context.sampleRate); 
    newBuffer.getChannelData(0).set(window.buffers0); 
    newBuffer.getChannelData(1).set(window.buffers1); 
    window.newSource.buffer = newBuffer; 
    window.newSource.connect(context.destination); 
    window.newSource.start(0); 
} 
+0

呃...非常感謝!有用!我只是在w3c規範中閱讀「只讀」,所以我認爲你不能操縱。但很簡單:只需創建一個緩衝區,調用get Channeldate並將其設置爲任何數據...(您不需要recorder.js)...再次感謝... – KevinB

+0

非常感謝!很高興聽到它幫助:)玩得開心! :) – Sarah