HTML5网络音频API-录音声音临时



我目前正在创建一个HTML5音乐编辑程序。我从录音开始。我想好了如何访问麦克风等等。"Recorder.js"中的代码对我帮助很大。

但我不想写入.wave文件,而是想创建一个临时音频缓冲区。我在"onaudioprocess"事件中从inputtbuffer获得Float32Array,并将它们全部保存在一个Float32Array中。现在我有了一个数组,里面有值,比如说3秒的记录。现在我想创建一个音频缓冲区来播放我录制的声音(保存在那个数组中)。

在阅读([Webaudio API规范])1时,未发现任何使用现有Float32Array创建新音频缓冲区的可能性。

也许我把录音录错了,或者我只是阅读盲了。我读到的每一个问题都是在Recorder.js上链接的,但我不想先保存一个文件,然后再加载。

有人知道吗?太棒了。

谢谢大家!

我对javascript很陌生,但我想你的问题和我想做的一样,现在我找到了答案。不调用recorder.exportWAV函数,而是调用recorder.getBuffer(getBufferCallback)函数,如下所示。我希望这能有所帮助。它对我有用。

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);
}

最新更新