2016-12-15 21 views
6

fluent-ffmpegを使用して、ディレクトリまたはデータベースエントリの最後のn個の画像のビデオを作成します。入力ファイルの配列からfluent-ffmpeg

正しい構文はどれですか?

これらは私の試みです:

ミミックシェルコマンド

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

が、それはシェルコマンドを受け付けません。

スペース - 区切りのパス

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() 

それは配列を受け付けません。

EDIT:

また、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秒のビデオ。あなたはそのような減速を使用することができるように

答えて

3

ffmpegの方法は、チェーン可能です:あなたの最後の編集は、ほぼ同じことをしましたが、それは代わりの上の同じレベルに)(.input呼び出し続けます

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

上に戻る

+0

しかし、 'chainedInputs.output(" ./ output.mp4 ")。run()'はまだリストの最初のpngを含む0のseondsビデオを返します –