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

leo*_*hel 6 ffmpeg mongodb node.js fluent-ffmpeg

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

哪种语法正确?

这些是我的尝试:

模仿shell命令

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

但它不接受shell命令;

空间分隔的路径

ffmpeg()
  .addInput('a*.png b*.png ')
  .inputOptions("-pattern_type glob")
  .output("output.mp4").run()
Run Code Online (Sandbox Code Playgroud)

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

图像路径数组

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

但它不接受数组.

编辑:

此外,从使用节点fluent ffmpeg合并多个视频,我可以使用文件数组添加多个输入

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

但跑步

f.output("./output.mp4").run()
Run Code Online (Sandbox Code Playgroud)

我只获得一个0秒的视频,其中包含列表的第一个png.

Jus*_*pty 5

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

var chainedInputs = inputlist.reduce((result, inputItem) => result.addInput(inputItem), ffmpeg());
Run Code Online (Sandbox Code Playgroud)

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