合并缓冲和交错从麦克风录制的同时
merging buffers and interleaving the while recording from a microphone
我对如何从麦克风录制并保存文件做了一些研究。我找到了一个例子,但并不是所有的函数都解释得很好。如果有人能给我解释一下这两个函数到底是做什么的?
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;
}
到目前为止,我已经理解了从源(麦克风)获得的声音保存在float数组类型的缓冲区中。保存了两个缓冲区,leftChannel和rightChannel类似于扬声器(左和右)这里是我正在谈论的例子的链接:http://typedarray.org/from-microphone-to-wav-with-getusermedia-and-web-audio/
这两个函数的名称和来源都是不言自明的:
-
mergeBuffers
通过连接将多个缓冲区合并为一个。 interleave
接受两个缓冲区,并返回一个具有交替左、右通道值的缓冲区,这是一个非常标准的立体声表示。
channelBuffer
是一个包含多个缓冲区的数组,您将得到一个将所有这些缓冲区连接在一起的单个缓冲区。相关文章:
- 使用navigator.getUserMedia(Javascript)访问移动麦克风
- WebAudio API麦克风分贝阈值/选通(麦克风输入太敏感)
- 正在寻找一种跨移动浏览器兼容的方式,通过内置麦克风进行录制
- HTML5音频如何防止浏览器麦克风拾取所有声音
- 为什么我得到“;没有方法'indexOf'"在ExtJS4.2中尝试在网格上使用缓冲渲染器时出错
- 如何检查html5视频是否有足够的缓冲,以便在不停止缓冲的情况下播放
- 通过chrome后台扩展或后台应用程序访问用户麦克风
- HTML5相机缓冲和延迟(延迟镜像)
- 无效的非字符串/缓冲区块Node.js
- 在 Node.js 中使用流来缓冲 HTTP 通信
- HTML 5 音频 :是否有在更改缓冲持续时间时触发的事件
- 闪烁麦克风事件大小调整
- 如何将MP3文件播放到麦克风输入jQuery中
- 使用Cordova和JavaScript(无需getUserMedia)从android麦克风获取音频数据
- 网络音频:如何使用移动麦克风从远处拾取音频
- Javascript:获取浏览器's选定的麦克风名称
- 乙烯基缓冲液的用途是什么
- HTML5<音频>:点击下一首歌曲时停止加载/缓冲
- 使用getUserMedia()同时录制来自多个麦克风的音频
- 合并缓冲和交错从麦克风录制的同时