
Ich habe eine Überwachungskamera, die JPEG-Bilder (.jpg) auf einen FTP-Server hochlädt, wenn sie eine Bewegung erkennt. Wir bekommen anscheinend ziemlich viele Bilder, deshalb möchte ich sie zu einem Video zusammenfassen, um das Betrachten zu erleichtern.
Ich habe mehrere Google-Suchen durchgeführt, aber nichts ergibt das, was ich erwartet habe. Der Ordner, den ich verwende, enthält über 2000 Bilder mit dem Namen AyyMMddhhmmssff.jpg. Wenn ich sie umbenennen muss, kann ich das tun, da ich bereits festgestellt habe, dass ich das tun muss, damit FFMPEG funktioniert.
Ich hätte gern ein Bild pro Sekunde, oder vielleicht zwei pro Sekunde, damit die Bilder beim Abspielen des Videos gut zu sehen sind. Ja, ich weiß, das ergibt ein Video von über 20/40 Minuten!
Ich bin mit einer Windows-, macOS- oder Ubuntu-Lösung zufrieden! Ich würde Windows bevorzugen (da sich dort der FTP-Server befindet).
BildMagick
convert *.jpg video.mpg
Das klang großartig, nett und einfach. Ich habe es jedoch auf meinem Mac (über Brew installiert) und Ubuntu versucht und beide brachten die Leistung des jeweiligen Systems zum Stillstand und nach 20 Minuten war immer noch nicht alles fertig. Ich musste den Mac neu starten, da ich nichts tun konnte!
FFMPEG
ffmpeg -y -r 6 -f image2 -s 1920x1080 -i <path>\%06d.jpg -vcodec libx264 -pix_fmt yuv420p <path>/video.mp4
Ich bin kein Experte, wenn es um die Verwendung von FFMPEG geht, aber ich habe es für verschiedene Aufgaben verwendet und fand, dass es ein großartiges Hilfsprogramm ist. Der obige Befehl erzeugt zwar ein Video, aber die Bilder werden zu schnell angezeigt, was den Sinn des Videos verfehlt. Ich habe versucht, die Werte zu optimieren und kann es verbessern, aber es ist nicht genau das, was ich will. Ein Versuch (Einstellung, wenn ich mich -r 1
recht entsinne) führte zu einem einzigen Bild für das gesamte Video! Es ist klar, dass ich die verschiedenen Argumente im FFMPEG-Befehl nicht verstehe, obwohl ich mir das Handbuch angesehen habe!
Antwort1
Wenn Sie die Bilder umbenennen und fortlaufend nummerieren möchten, können Sie
ffmpeg -y -framerate 1 -i <path>\%06d.jpg -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
Fortlaufend nummeriert, wie in 000001.jpg
, 000002.jpg
, 000003.jpg
… Beachten Sie, dass jeder Name genau aus 6 Zeichen besteht, was die %06d
an ffmpeg weitergegebene Anforderung erfüllt.
Wenn Sie nicht umbenennen möchten, erstellen Sie eine Textdatei der Form,
file first.jpg
file second.jpg
file third.jpg
...
file last.jpg
und dann
ffmpeg -f concat -r 1 -i list.txt -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
Antwort2
Ändern Sie es statt -r 5 in -framerate 5. Dadurch wird ein Video mit 5 Bildern pro Sekunde erstellt. Sie können diese Zahl nach Bedarf anpassen. 1 zeigt jedes Bild 1 Sekunde lang, 10 führt zu einem schnelleren Durchlauf.
ffmpeg -y -framerate 1 -i <path>\%06d.jpg -framerate 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4
or
ffmpeg -f concat -r 1 -i list.txt -framerate 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4