2016-07-25 19 views
0

ich diese verwenden Frames von Video zu erhalten und sie in einem Bild verketten:ffmpeg concatenate Bilder in einem Bild

ffmpeg -i output.mp4 -vf 'fps=2,tile=1000x1' out.jpg 

Aber es gibt ein Problem: Ich weiß nicht, Anzahl der Frames, die abgerufen werden. Hier habe ich die Kachelgröße 1000x1 fest codiert, aber wenn es mehr als 1000 Frames geben wird, dann wird es ein Fehler sein. Bevor ich ffmpeg starte, kenne ich die tatsächliche Größe der Kachel nicht.

Deshalb möchte ich Befehl wie:

ffmpeg -i output.mp4 -vf 'fps=2,tile=*x1' out.jpg 

Das bedeutet: Ich möchte Sie alle Bilder verketten, die in einer Reihe geholt werden, aber ich kann nicht * als Argument für Fliesen verwenden.

Gibt es einen Weg, mein Problem zu lösen?

Antwort

2

bekam ich eine Idee:

$ FRAMES=`ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 xxx.mp4` 
$ FFMPEG="ffmpeg -i xxx.mp4 -vf 'fps=2,tile=\$FRAMESx1' out.jpg" 
$ `echo "${FFMPEG//\$FRAMES/$FRAMES}"`