Wie erstelle ich ein Zeitraffervideo aus einer Fotosammlung unter Linux?

19

Ich möchte einen Zeitraffer aus einer Sammlung von Bildern unter Ubuntu erstellen. Ich möchte HD-Videos machen und im Idealfall einen Soundtrack hinzufügen.

Joseph_Thala
quelle
Ich habe das nicht gesehen. Ich kann diese Frage löschen und meine Antwort dort posten. Ist das in Ordnung?
Frederico Schardong
Ich bin mir nicht mal sicher, ob dies die beste Stack-Exchange-Site dafür ist. Ich möchte nur mitteilen, was ich getan habe.
Frederico Schardong
Es gibt eine ähnliche Frage auf askubuntu.com . Die Antworten werden hier zum Zeitpunkt des Schreibens größtenteils behandelt, aber das könnte sich natürlich in Zukunft ändern.
Anarcat

Antworten:

11

Ffmpeg wird es tun. Wenn Sie Bilder haben, gehen Sie img001.jpg, img002.jpg, img003.jpg, ...in der Befehlszeile wie folgt vor:

ffmpeg -i img*.jpg output.mpeg

Es gibt mehr Optionen in ffmpeg --helpoder Manpages oder im Web. Diese ermöglichen die Steuerung der Bildrate und des Ausgabeformats.

Unapiedra
quelle
Die Verwendung dieser Option führt für mich zu einem Fehler, da letztere .jpgDateien als Ausgabedatei betrachtet werden. Ich verstehe File 'DSCF6134.JPG' already exists. Overwrite ? [y/N]- nicht so toll. Meine Lösung bestand darin, eine Dateiliste mit zu generieren \ls *.JPG | sed "s/^/file '/;s/$/'/" > files.txtund diese dann mit zu laden ffmpeg -f concat -i files.txt output.mpeg.
Anarcat
Bei anderen ffmpeg-Versionen funktioniert die folgende Version, ohne Bilder zu überschreiben:ffmpeg -pattern_type glob -i "picture*.jpg" output.mpeg
Patrick R.,
9

Zuerst benennen wir alle * .JPG-Dateien basierend auf ihrem Erstellungsdatum um. Manchmal ändern Kameras den Dateinamen oder nur die Bestellung ist irgendwie nicht das, was wir wollen. Das Umbenennen nach dem Erstellungsdatum funktioniert jedoch immer:

jhead -n%Y%m%d-%H%M%S *.JPG

Danach fügen wir diese Liste in eine Datei ein:

ls -1tr | grep -v files.txt > files.txt

Und dann verwenden mencoder, um ein AVIVideo mit 20 fps zu erstellen . Beachten Sie, dass dadurch eine große Videodatei erstellt wird, die in der Regel ungefähr die gleiche Größe aller Bilder aufweist.

mencoder -nosound -noskip -oac copy -ovc copy -o output.avi -mf fps=20 'mf://@files.txt'

Normalerweise mache ich Bilder für Zeitraffer mit der niedrigsten Auflösung meiner Kamera (5 MP), die ein Seitenverhältnis von 4: 3 hat. Um ein korrektes 1080p-Video zu erzeugen, wird das Bild zuerst auf 1920 Pixel Breite neu skaliert und dann auf 1080 Pixel Höhe zugeschnitten. Auf diese Weise ändere ich nicht den Inhalt der Fotos, sondern beschneide nur:

ffmpeg -i output.avi -y -sameq -vf scale=1920:1440,crop=1920:1080 output-final.avi

Der Grund, warum ich die Fotos mit Mencoder zusammenstelle, ist, dass ich ein segmentation faultmit ffmpeg habe.

Frederico Schardong
quelle
Für den segfault wäre es hilfreich, Ihre Version von ffmpeg zu kennen.
Unapiedra
Wenn Sie wie ich in 3: 2 gedreht haben (meine D750-Standbilder sind 6016x4016) und es in 16: 9 (für 4k-Video) 3840x2160 benötigen, können Sie FFMPEG verwenden, um das Video zu pillen und schwarze Straßenbahnlinien an den Seiten mit diesem Befehl aufzufüllen - ffmpeg -i output.avi -qscale 0 -vf "scale = 3840: 2160: force_original_aspect_ratio = less, pad = 3840: 2160: (ow-iw) / 2: (oh-ih) / 2" output-final.avi - Video wird größer sein, aber kein Qualitätsverlust, da dies Downscaling ist
Rob
In Ihrem ffmpegBefehl wird die -sameqOption jetzt durch-qscale 0
transang 20.01.18
3

Blender ist eine gute Lösung, wenn Sie mit Zeitraffer (Hyperlapse) oder instabilem Filmmaterial arbeiten. Es verfügt über Bewegungsverfolgungsfunktionen, sodass Sie einen festen Punkt für die Verfolgung im Zeitraffer auswählen können. Sie können auch Rotationsprobleme beheben.

Reed G. Law
quelle
0

Sie können Mencoder verwenden. Optionen sind ziemlich explizit:

  • liste alle deine bilddateien auf.

Wenn sich alle im aktuellen Verzeichnis mit den geordneten Namen befinden und Sie die Liste in der Datei /tmp/files.txt haben möchten:

ls -1 *jpg > /tmp/files.txt

  • Verwenden Sie den Mencoder mit der entsprechenden Option.

Wenn die Ausgabedatei /tmp/test.avi mit 30fps sein soll:

mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4 -o /tmp/test.avi -mf type=jpeg:fps=30 mf://@/tmp/files.txt

Manu H
quelle
0

Kdenlive kann mithilfe des Add Slideshow ClipMenüs auch Zeitraffer erstellen, wie in diesem Lernprogramm erläutert .

Laut derselben Site hat Openshot eine ähnliche Funktionalität, empfiehlt sie jedoch nicht, da sie "viel zu fehlerhaft" ist. Wenn es sich jedoch um Ihren bevorzugten Videoeditor handelt, können Sie einfach eine Folge von ordnungsgemäß benannten Dateien (001.jpg bis NNN.jpg) in ein Openshot-Fenster ziehen und ablegen, um sie auch als Zeitraffer zu importieren.

Anarkatze
quelle
Dieser Leitfaden stammt aus dem Jahr 2014. OpenShot hat sich in den letzten Jahren sehr bewährt und ist jetzt viel zuverlässiger.
Vclaw