Seb*_*Seb 5 stream wav node.js node-webkit web-audio-api
我正在开发一个nodewebkit应用程序,该应用程序使用Web Audio API记录麦克风数据并将其保存到磁盘.
我已经使用了RecordRTC框架,但是随着录制的进行,它没有提供将数据流式传输到磁盘的方法(考虑到录制时间可能超过一小时,这是必要的).
我似乎无法找到使用其他方法将数据流式传输到磁盘的好方法.如果有一个正确的方法来做到这一点,我会很感激有关正确的工具是什么的提示.
但是,我现在的非工作解决方案是:
这没有用,因为ReadableStreamBuffer一次只向fileWriter传输20个字节,而不是因为某些原因而排队来自麦克风的所有字节.
var wav = require('wav');
var streamBuffers = require("stream-buffers");
function convertFloat32ToInt16(buffer) {
var l = buffer.length;
var buf = new Int16Array(l);
while (l--) {
buf[l] = Math.min(1, buffer[l])*0x7FFF;
}
return buf.buffer;
}
var filePath = utils.getCwd() + '/recordings/demo.wav';
var fileWriter = new wav.FileWriter( filePath, {
channels: 1,
sampleRate: 48000,
bitDepth: 16
});
var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
frequency: 0, // in milliseconds.
chunkSize: 2048 // in bytes.
});
myReadableStreamBuffer.pipe(fileWriter);
source.connect(scriptNode);
scriptNode.connect(context.destination);
scriptNode.onaudioprocess = function(e) {
var arrayBuffer = convertFloat32ToInt16(e.inputBuffer.getChannelData(0));
myReadableStreamBuffer.put(arrayBuffer);
// close myReadableStreamBuffer and run fileWriter.end() when recording is done
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |