我想使用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()
我只获得一个0秒的视频,其中包含列表的第一个png。
答案 0 :(得分:4)
ffmpeg方法是可链接的,所以你可以像这样使用reducer:
var chainedInputs = inputlist.reduce((result, inputItem) => result.addInput(inputItem), ffmpeg());
你的上一次编辑几乎做了同样的事情,但它一直在同一级别上调用.input()而不是在之前的
之上