Node.js - 可读流如何处理仍在写入的文件?

5
我发现了很多关于如何在Node中将数据从读取流传输或导出到写入流的信息。新版本甚至会自动暂停和恢复。然而,我的需求有所不同,我需要一些帮助。

我正在使用ffmpeg将视频文件写入本地文件(而不是可写流),并希望创建一个读取流,在文件写入时读取数据。显然,读取流的速度将超过ffmpeg编码文件的速度。当读取流在ffmpeg完成文件编码之前达到数据结尾时,会发生什么?我假设它会在文件完全编码之前停止读取流

有没有任何建议可以暂停/恢复读取流的最佳方法,以便它不会在编码100%完成之前到达本地编码文件的末尾?

总之:

这是人们通常做的事情:readStream --> writeStream(使用.pipe)

这是我的要求:本地文件(缓慢创建过程中)--> readStream

感谢 stackOverflow 社区的支持。


注意:如果更容易的话,我可以使用ffmpeg对流进行编码。有没有一种反向.pipe的方法?就像writeStream --> readStream那样?不幸的是,writeStreams没有“data”侦听器。 - agentOOjoe
请查看Stream.pipe的选项。它允许您传递一个标志({ end: false })来保持目标流的打开状态。这可能是您应该首先了解的事情。 - Dominic Barnes
谢谢Dominic。不过,这个选项会保持目标writeStream打开,而在我的情况下,我需要对readStream使用'end: false'。很不幸,我需要像反向stream.pipe之类的东西……如果有任何意义的话。 - agentOOjoe
在将输出写入文件之前,您可能已经读取了输出吗?ffmpegEncodeWriteStream.pipe(throughStream).pipe(file)。这样,您可以获得与从文件流式传输相同的所有数据,但是您不需要考虑文件创建实际完成的时间。 - Shawn
1个回答

7

DeaDEnD又来了!这个模块正是我正在寻找的。我会尽快尝试实现它,并稍后回复。谢谢! - agentOOjoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接