2016-11-30 4 views
1

Ich möchte, sagen wir, 10 Video-Frames aus einem gegebenen Video-Datei mit ffmpeg, idealerweise gleichmäßig verteilt über das Video. Ich weiß, dass dies auf verschiedene Arten gemacht werden kann, zum BeispielQuicky Ausgabe Auswahl von Video-Frames mit ffmpeg

ffmpeg -i input.mp4 -vf fps=1/10 out%03d.jpg 

wird alle 10 Sekunden ein Bild ausgeben. Dies ist jedoch für meinen Geschmack zu langsam und skaliert proportional zur Länge des Videos. Ich habe ein wenig über FFmpegs seeking Fähigkeit zu lesen, zum Beispiel

ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 out001.jpg 

wird sehr schnell zur 5. Sekunde des Videos suchen und einen Frame zu extrahieren. Ich bin jedoch nicht auf eine Möglichkeit gestoßen, nach mehreren Orten im Video zu suchen, ohne den obigen Befehl zu verschiedenen Zeiten wiederholt aufzurufen.

Gibt es einen schnelleren Weg, dies zu erreichen?

+0

Kennen Sie die Dauer des Videos? – Mulvya

+0

Ich kann das sehr schnell mit ffmpeg/ffprobe bekommen, also ist die Zeit, um die ausgewählten Frames zu verteilen, kein Problem. Ich würde es gerne schneller machen als die oben genannten Methoden. – Shaun

+0

Nur die 's' vor' -i' suchen schnell. 's' nach oder Verwendung eines Filters, wie' select', werden mehr Zeit in Anspruch nehmen, da alle Frames decodiert, ausgewertet und dann behalten oder verworfen werden. – Mulvya

Antwort

1

Mit einem langen Befehl kann dies durchgeführt werden

z.

ffmpeg -ss 00:00:05 -i input.mp4 
     -ss 00:01:05 -i input.mp4 
     -ss 00:03:05 -i input.mp4 
     -ss 00:40:05 -i input.mp4 
     -map 0:v -frames:v 1 out001.jpg 
     -map 1:v -frames:v 1 out002.jpg 
     -map 2:v -frames:v 1 out003.jpg 
     -map 3:v -frames:v 1 out004.jpg 
Verwandte Themen