我正在创建一个Electron应用程序,其中我正在从网络摄像头和桌面记录数据,在记录会话结束时,我想将数据保存到后台的文件中。我不知道如何将数据从blob直接写入文件。有什么建议吗?下面是我目前对MediaRecord Stop事件的处理。
this.mediaRecorder.onstop = (e) => {
var blob = new Blob(this.chunks,
{ 'type' : 'video/mp4; codecs=H.264' });
var fs = require('fs');
var fr = new FileReader();
var data = null;
fr.onload = () => {
data = fr.result;
fs.writeFile("test.mp4", data, err => {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
};
fr.readAsArrayBuffer(blob);
}
字符串
1条答案
按热度按时间yqkkidmi1#
你可以使用
FileReader
和Buffer
。在渲染器进程中,将事件发送到主进程,以使用缓冲区保存文件:
字符串
返回确认:
型
(SAVE_FILE和SAVED_FILE是包含事件名称的静态字符串)
并且在主过程中:
型
outputFile来自'fs-extra'
优先考虑在主进程中处理节点操作。参见电子安全建议。
如果你不想使用主进程,你可以使用'electron-remote'创建后台进程来写文件。另外,你可以在后台进程中调用
ffmpeg
来压缩/编码文件成不同的格式。