使用Fluent-FFmpeg确认文件并在Express中无需文件系统即可进行转换

时间:2019-04-28 19:37:08

标签: node.js express stream ffprobe fluent-ffmpeg

我正在使用Multer作为中间件,将文件缓冲区传递到Express中的控制器中。我可以使用Streamifier轻松地将缓冲区转换为可读流,然后进行转换。例如:

ffmpeg()
   .input(streamifier.createReadStream(req.file.buffer))
   .format('mp3')
   .audioCodec('libmp3lame')
   .audioQuality(0)
   ///etc.....

我的问题是,我想在转换之前确认文件的元数据。

ffmpeg()
   .input(streamifier.createReadStream(req.file.buffer))
   .ffprobe((err, data) => {

问题1:无法从流中捕获元数据的某些方面。最重要的是,data.format.duration

问题2: 来自fluent-ffmpeg文档:
“警告:ffprobe可能会与输入流一起调用,但是在这种情况下,它将消耗流中的数据,并且该数据将不再可用于ffmpeg。在同一输入流上同时使用ffprobe和转码命令除非流是实时流,否则很可能会失败。只有在知道自己在做什么的情况下,才这样做。”

我想使我的架构保持无状态(不使用文件系统),其次,我想合理有效地执行此过程。有人建议过使用开源npm软件包吗?

提前谢谢!

0 个答案:

没有答案