我正在使用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软件包吗?
提前谢谢!