node.js - 来自输入文件数组的 fluent-ffmpeg

标签 node.js mongodb ffmpeg fluent-ffmpeg

我想使用 fluent-ffmpeg 来创建一个目录的最后 n 个图像或数据库条目的视频。

正确的语法是什么?

这些是我的尝试:

模仿 shell 命令

ffmpeg()
  .addInput('ls *png | tail -n 17')
  .inputOptions("-pattern_type glob")
  .output("output.mp4").run()

但它不接受shell命令;

空格 - 分隔路径

ffmpeg()
  .addInput('a*.png b*.png ')
  .inputOptions("-pattern_type glob")
  .output("output.mp4").run()

但它不接受以空格分隔的文件列表;

图像路径数组

ffmpeg()
  .addInput(array) // ['aa.png', 'a1.png',,,'bbb.png']
  .inputOptions("-pattern_type glob")
  .output("output.mp4").run()

但它不接受数组。

编辑:

另外,来自 Merge Multiple Videos using node fluent ffmpeg ,我可以使用文件数组添加多个输入

var ffmpeg= require('fluent-ffmpeg');
var f=ffmpeg() 
pngarr.forEach(p => f.input(p)) /// pngarr is my array of png paths

但正在运行

f.output("./output.mp4").run()

我只获得了一个包含列表中第一个 png 的 0 秒视频。

最佳答案

ffmpeg 方法是可链接的,因此您可以像这样使用 reducer:

var chainedInputs = inputlist.reduce((result, inputItem) => result.addInput(inputItem), ffmpeg());

您的上一次编辑几乎做了同样的事情,但它一直在同一级别调用 .input() 而不是在前一个之上

关于node.js - 来自输入文件数组的 fluent-ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41155645/

相关文章:

mongodb - 在grails中,如何让transactionManager是mongoTransactionManager?

ffmpeg - 如果驱动程序可用,我们可以设置 FFMPEG 硬件加速,否则使用默认值?

node.js - 单线程同步和异步混淆

javascript - NodeJS mysql同步查询

mongodb - 如何在 mongodb 上配置 storage.smallFiles

python-3.x - 等待 subprocess.run 直到完成它的任务

video - ffmpeg 分布式转码

javascript - 覆盖多个先前的终端输出

node.js - mongodb 中的 $pullAll 不起作用

ruby-on-rails - Rails_admin : browsing collections of unknown structure