Nuz*_*zob 4 javascript video node.js electron
在我的电子应用程序中,用户可以使用MediaRecorder API从网络摄像头录制视频。
当用户点击“停止录制”按钮时,我得到了录制的视频的斑点。
我想做的就是将这个Blob转换为真实的webm视频,并将其写入用户的文件系统中,例如:
fs.writeFile(localdir + '\\video.webm', videoBlob); // does not work
Run Code Online (Sandbox Code Playgroud)
下面的示例非常适合我从网络摄像头获取的base64图像快照,但是我无法使其与我获取的视频blob一起使用。
谢谢赐教!
Jef*_*D23 21
另一种替代方法FileReader是通过 BlobarrayBuffer方法采用基于承诺的方法:
async function saveFile() {
const blob = new Blob(chunks, {
type: 'video/webm'
})
const buffer = Buffer.from( await blob.arrayBuffer() );
fs.writeFile('video.webm', buffer, () => console.log('video saved!') );
}
Run Code Online (Sandbox Code Playgroud)
创建一个视频Blob。chunks是来自MediaRecorder实例的event.data的数组ondataavailable
var blob = new Blob(chunks, {
type: 'video/webm'
})
Run Code Online (Sandbox Code Playgroud)
将blob读为ArrayBuffer,并使用它创建一个Buffer。将缓冲区另存为文件。
var reader = new FileReader()
reader.onload = function(){
var buffer = new Buffer(reader.result)
fs.writeFile(path, buffer, {}, (err, res) => {
if(err){
console.error(err)
return
}
console.log('video saved')
})
}
reader.readAsArrayBuffer(blob)
Run Code Online (Sandbox Code Playgroud)