2014-04-22 97 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