我正在Electron(因此Node.js )中试验MediaStream Recording API,并希望将输出作为流处理。作为流处理将允许我在之前处理 MediaRecorder 输出- 例如,我可以对其进行加密。对于我的具体用例,我只关心音频,所以我没有录制任何视频元素。
\n\n我最基本的用例是简单地使用流将输出保存到磁盘,但我似乎无法实现这一基本任务,所以我将把这个问题集中在实现这一点上。
\n\n问题:如何使用流将 MediaRecorder Web API 输出保存到磁盘。
\n\n我可以使用下载 \xe2\x80\x9chack\xe2\x80\x9d(由 Google 此处提供和描述)将文件保存到磁盘,并成功使用node.js fs打开、转换(加密)、保存新文件加密的文件,并删除未加密的文件。这意味着我最终必须将未加密的数据保存到磁盘上。即使时间很短,这也感觉像是一种安全妥协,我认为通过在保存之前加密可以很容易地避免这种情况。
\n\n我存在在不同流对象之间交叉很多电线的风险,但令我惊讶的是我还没有在网上找到解决方案 - 因此我提出了我的 StackOverflow 问题樱桃。
\n\n下面是一个突出显示我所尝试过的所有项目的项目。关键代码是record.js,在save()函数中。
\n\n最终,我试图创建一个合适的插件readStream
来插入使用 usingwriteStream
创建的。const writeStream = fs.createWriteStream(fPath);
readStream.pipe(writeStream)
总而言之,我尝试了以下方法:
\n\n1.Blob
到readStream
我无法转换Blob
为readStream
, only ReadableStream
,ReadableStreamDefaultReader
或Uint8Array
2.Blob
到file
(在内存中)然后使用fs.createReadStream()
我似乎无法使用 …