2016-12-15 16 views
6

Chcę użyć pliku fluent-ffmpeg, aby utworzyć wideo z ostatnich n obrazów katalogu lub wpisów w bazie danych.fluent-ffmpeg z tablicy plików wejściowych

Jaka jest prawidłowa składnia?

Są to moi stara:

Mimic polecenie powłoki

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

ale nie akceptuje polecenia powłoki;

Space - oddzielone ścieżki

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

ale nie akceptuje listę plików rozdzielonych spacjami;

Array ścieżek graficznych

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

ale nie akceptuje tablic.

EDIT:

Również od Merge Multiple Videos using node fluent ffmpeg, jestem w stanie dodać wiele wejść przy użyciu tablicy plików jako

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

Ale działa

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

mogę uzyskać tylko wideo z 0 sekund zawierające pierwszy png z listy.

Odpowiedz

3

Metody ffmpeg są chainable, więc można używać reduktor tak:

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

Twoja ostatnia edycja prawie tak samo, ale utrzymuje nazywając .input() na tym samym poziomie, a nie na top of the last

+0

Ale 'chainedInputs.output (" ./ output.mp4 "). run()' nadal zwraca wideo z 0 miejsc zawierające pierwsze png listy –

Powiązane problemy