HTML5 Web Audio API - 录制声音临时

时间:2014-04-22 11:20:02

标签: html5 api audio web record

我目前正在制作HTML5音乐编辑程序。 我开始录制音频。 我想出了如何访问麦克风等等。 代码来自" Recorder.js"帮助了我很多。

但是我没有写入.wave文件,而是想创建一个临时的audiobuffer。 我从" onaudioprocess"中的inputtbuffer获得了Float32Array。事件并将它们全部保存在一个Float32Array中。 现在我有一个带有值的数组,让我们说3秒的录音。 现在我想创建一个Audiobuffer来播放我录制的声音(保存在该阵列中)。

在阅读([Webaudio API规范])1但未发现任何可能使用现有的Float32Array创建新的audiobuffer。

也许我做错录音或者我只是盲目阅读。 我读过的每个其他问题都是在Recorder.js上链接,但我不想先保存文件然后重新加载。

有人知道吗? 太棒了。

谢谢大家!

1 个答案:

答案 0 :(得分: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);
}