Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从麦克风录制时合并缓冲区并交错_Javascript_Arrays_Buffer_Wav - Fatal编程技术网

Javascript 从麦克风录制时合并缓冲区并交错

Javascript 从麦克风录制时合并缓冲区并交错,javascript,arrays,buffer,wav,Javascript,Arrays,Buffer,Wav,我做了一些关于如何从麦克风录制和保存文件的研究。我找到了一个示例,但并不是所有的函数都解释得很好。如果有人能向我解释这两个函数到底做了什么 function mergeBuffers(channelBuffer, recordingLength){ var result = new Float32Array(recordingLength); var offset = 0; var lng = channelBuffer.length; for (var i = 0; i < lng; i

我做了一些关于如何从麦克风录制和保存文件的研究。我找到了一个示例,但并不是所有的函数都解释得很好。如果有人能向我解释这两个函数到底做了什么

function mergeBuffers(channelBuffer, recordingLength){
var result = new Float32Array(recordingLength);
var offset = 0;
var lng = channelBuffer.length;
for (var i = 0; i < lng; i++){
var buffer = channelBuffer[i];
result.set(buffer, offset);
offset += buffer.length;
}
    return result;
   }
这是第二个功能:

function interleave(leftChannel, rightChannel){
var length = leftChannel.length + rightChannel.length;
var result = new Float32Array(length);

var inputIndex = 0;

for (var index = 0; index < length; ){
 result[index++] = leftChannel[inputIndex];
 result[index++] = rightChannel[inputIndex];
 inputIndex++;
}
return result;
}
到目前为止,我了解到从源麦克风获得的声音保存在浮点阵列类型的缓冲区中。保存了两个缓冲区,leftChannel和rightChannel,类似于扬声器Left和right
下面是我正在谈论的示例的链接:

这两个函数的名称和来源都是不言自明的:

mergeBuffers通过连接将多个缓冲区合并为一个缓冲区。channelBuffer是一个包含多个缓冲区的数组,您可以得到一个缓冲区,所有这些缓冲区连接在一起

interleave使用两个缓冲区,并返回一个具有交替的左声道和右声道值的缓冲区,这是立体声的一种非常标准的表示形式


我确实理解,但为什么我要合并缓冲区,为什么我要交错缓冲区??这在你链接的文章中都有解释。录制时会重复调用onaudioprocess处理程序。每次调用它时,它都会为每个通道接收一个缓冲区,该缓冲区包含自第一次记录开始以来的数据,然后是自此后最后一次调用以来的数据。给出的示例代码保存了这些缓冲区,这些缓冲区随后分别左、右合并并交错,因为WAV文件应该具有这些通道。我希望编辑文件下载,而不是在停止录制时自动下载,我希望显示一个链接,这样当用户单击该链接时,记录将打开。怎么做?如果您能提供帮助,这超出了原始问题的范围,您所说的编辑是什么意思?如果您只想将录制结束与保存文件分开,只需删除“单击创建”和“发送”,而是将创建的链接添加到您的页面中的任意位置。