[我正在尝试将网络摄像头或音频流上传到Nodejs并将其保存到磁盘。目的是在数据可用时立即将数据块发送到服务器。我已经从gerUserMedia中获取了流,设置了mediaRecorder,当数据可用时,我将blob转换为arrayBuffer并将其发送到服务器。我知道代码是错误的,因为我不确定正确的方法是什么,但是当数据发送到服务器时,将保存一个文件,但仅保存1kb的文件,该文件应为大视频文件。我该怎么办?
//Client Side
recorder.ondataavailable = (event) => {
const reader = new FileReader();
reader.onload = (event) =>{
recordedChunks.push(event.data);
sendDataToServer(event.target.result)
}
reader.readAsArrayBuffer(event.data)
}
reader.readAsArrayBuffer(event.data)
//Server-Side
app.post('/media', function (req, res, next) {
try {
const { data } = req.body;
const dataBuffer = new Buffer(data, 'base64');
const fileStream = fs.createWriteStream('video.webm');
fileStream.write(dataBuffer);
} catch (error) {
console.log(error);
}
})
我会研究formidable,它为您提供了一些很棒的帮助文件上传的东西。他们也有一个使用express的示例。
form.on('progress',(bytesReceived,bytesExpected)=> {});
给个镜头,让我们知道如何进行,或者如果您还有其他问题。