我目前正在制作HTML5音乐编辑程序。 我开始录制音频。 我想出了如何访问麦克风等等。 代码来自" Recorder.js"帮助了我很多。
但是我没有写入.wave文件,而是想创建一个临时的audiobuffer。 我从" onaudioprocess"中的inputtbuffer获得了Float32Array。事件并将它们全部保存在一个Float32Array中。 现在我有一个带有值的数组,让我们说3秒的录音。 现在我想创建一个Audiobuffer来播放我录制的声音(保存在该阵列中)。
在阅读([Webaudio API规范])1但未发现任何可能使用现有的Float32Array创建新的audiobuffer。
也许我做错录音或者我只是盲目阅读。 我读过的每个其他问题都是在Recorder.js上链接,但我不想先保存文件然后重新加载。
有人知道吗? 太棒了。
谢谢大家!
答案 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);
}