Wie generiere ich eine Vorschau aus mehreren Frames eines Videos mit FFmpeg?

Melden
  1. Einleitung
  2. Auswahl der Frames
  3. Frames zu einer Kontaktabzug-Collage zusammenfügen
  4. Alternative: animiertes GIF als Vorschau
  5. Weitere Optionen und Tipps
  6. Zusammenfassung

Einleitung

Wenn man aus einem Video eine Vorschau erstellen möchte, die mehrere einzelne Frames kombiniert, bietet FFmpeg eine Vielzahl von Möglichkeiten. Diese Vorschau kann beispielsweise als eine Bildübersicht in Form einer Kontaktabzug-großen Ansicht (Thumbnail-Collage) oder als animiertes GIF erzeugt werden. Im Folgenden wird Schritt für Schritt erklärt, wie du mit FFmpeg eine solche Vorschau generierst.

Auswahl der Frames

Zunächst musst du entscheiden, welche Frames der Videoquelle du extrahieren möchtest. Du kannst entweder gleichmäßig verteilte Frames aus dem gesamten Video extrahieren oder gezielt bestimmte Zeitpunkte auswählen. Um gleichmäßig verteilte Frames zu erhalten, kannst du beispielsweise eine feste Anzahl von Frames mit der Option -vf fps= auswählen oder einzelne Frames mit -ss an bestimmten Zeitpositionen ansteuern.

Beispiel, um 10 Frames pro Sekunde aus dem Video zu extrahieren:

ffmpeg -i input.mp4 -vf fps=1 thumb%03d.jpg

Dies erzeugt für jede Sekunde ein Bild (fps=1). Möchtest du nur eine bestimmte Anzahl an Frames, kannst du das entsprechend anpassen oder mit der Dauer des Videos multiplizieren.

Frames zu einer Kontaktabzug-Collage zusammenfügen

Nachdem du die benötigten Einzelbilder extrahiert hast, kannst du sie mit FFmpeg zu einem einzigen Bild mit mehreren Vorschaubildern anordnen. Hierfür eignet sich das tile-Filter. Dieses Filter legt die Bilder in einem rechteckigen Raster an, z.B. 5 Spalten mal 2 Zeilen.

Du kannst sowohl direkt aus dem Video eine Vorschau erstellen als auch aus bereits extrahierten Bildern arbeiten. Ein Beispiel, wie du direkt aus dem Video eine Kontaktabzug-Vorschau mit 10 Frames (5 Spalten x 2 Reihen) generierst:

ffmpeg -i input.mp4 -vf "fps=10,scale=320:240,tile=5x2" preview.jpg

Hierbei wird das Video auf 10 Frames pro Sekunde reduziert, jedes Bild auf 320x240 Pixel skaliert und dann das Tile-Filter genutzt, um daraus eine 5x2-Kachel zu erstellen. Das Ergebnis ist eine JPEG-Datei namens preview.jpg, die 10 Frames in einem Bild zusammenfasst.

Alternative: animiertes GIF als Vorschau

Eine beliebte Vorschauvariante ist ein animiertes GIF, das die ausgewählten Frames hintereinander abspielt. Dabei kannst du auch hier eine Frame-Rate definieren und die Größe anpassen.

Beispiel zur Erstellung eines animierten GIFs mit 10 Frames pro Sekunde, skaliert auf 320 Pixel Breite (die Höhe wird entsprechend angepasst):

ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -gifflags +transdiff -y preview.gif

Das Ergebnis ist eine animierte Vorschau, die sich z.B. gut für Webseiten oder Messenger eignet.

Weitere Optionen und Tipps

Mit FFmpeg kannst du noch weitere Einstellungen vornehmen. Möchtest du einzelne Bilder in benutzerdefinierten Zeitabständen extrahieren, kannst du die Option -ss in Kombination mit -frames:v 1 verwenden. Wenn du viele Bilder extrahierst, kannst du ein Skript schreiben, das diese dann zu einer Gesamtcollage zusammensetzt.

Beispielsweise kannst du eine Reihe von Einzelbildern (thumbnail001.jpg, thumbnail002.jpg etc.) mit FFmpeg in eine Collage einfügen, indem du sie per Input übergibst und das Filtergraph entsprechend nutzt oder du verwendest ImageMagick für noch komplexere Layouts.

Zusammenfassung

Mit FFmpeg ist es relativ einfach, eine Vorschau aus mehreren Video-Frames zu erzeugen. Möchtest du eine Kontaktabzug-Ansicht, kannst du das tile-Filter verwenden. Für animierte Vorschauen erzeugst du besser ein GIF oder ein Video aus den gefilterten Frames. Durch die Kombination von Filteroptionen wie fps (zur Frame-Rate-Reduzierung), scale (zur Größenanpassung) und tile (für die Anordnung der Frames) erreichst du flexible Anpassungen und kannst deine Vorschau passgenau erzeugen.

0

Kommentare