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.
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.
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.
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:
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.
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.
Antworten:
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 --help
oder Manpages oder im Web. Diese ermöglichen die Steuerung der Bildrate und des Ausgabeformats.quelle
.jpg
Dateien als Ausgabedatei betrachtet werden. Ich versteheFile '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.txt
und diese dann mit zu ladenffmpeg -f concat -i files.txt output.mpeg
.ffmpeg -pattern_type glob -i "picture*.jpg" output.mpeg
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:
Danach fügen wir diese Liste in eine Datei ein:
Und dann verwenden
mencoder
, um einAVI
Video 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.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:
Der Grund, warum ich die Fotos mit Mencoder zusammenstelle, ist, dass ich ein
segmentation fault
mit ffmpeg habe.quelle
ffmpeg
Befehl wird die-sameq
Option jetzt durch-qscale 0
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.
quelle
Sie könnten auch an dem Projekt timelapse-darktable interessiert sein . Es macht es einfach, Bilder mit darktable nachzubearbeiten und einen Zeitraffer der Serie zu erstellen. Eine Anleitung zur Verwendung finden Sie hier: https://code.google.com/p/timelapse-darktable/wiki/generateTimelapse
quelle
Sie können Mencoder verwenden. Optionen sind ziemlich explizit:
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
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
quelle
Kdenlive kann mithilfe des
Add Slideshow Clip
Menü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.
quelle