Erstellen Sie Videos aus einer Reihe von JPEGs

475
neildeadman

Ich habe eine CCTV-Kamera, die JPEG-Bilder (.jpg) auf einen FTP-Server hochlädt, wenn sie eine Bewegung erkennt. Wir scheinen ziemlich viele Bilder zu haben, deshalb möchte ich sie in ein Video umwandeln, um das Betrachten zu erleichtern.

Ich habe mehrere Google-Suchen durchgeführt, aber nichts bringt das hervor, was ich erwartet habe. Der Ordner, den ich verwende, hat mehr als 2000 Bilder, die AyyMMddhhmmssff.jpg heißen. Wenn ich umbenennen muss, kann ich das tun, da ich bereits finde, dass FFMPEG funktionieren muss.

Ich hätte gerne ein Bild pro Sekunde oder vielleicht 2 pro Sekunde, damit die Bilder beim Abspielen des Videos einfach angezeigt werden können. Ja, ich weiß, das ergibt ein 20 / 40min + Video!

Ich bin glücklich mit einer Windows-, MacOS- oder Ubuntu-Lösung! Meine Präferenz wäre Windows (da sich dort der FTP-Server befindet).

ImageMagick

convert *.jpg video.mpg 

Das klang großartig, nett und einfach. Ich habe jedoch auf meinem Mac (via Brew installiert) und Ubuntu versucht und beide Leistungseinstellungen des jeweiligen Systems zum Stillstand gebracht und nach 20 Minuten immer noch nicht beendet. 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 mehrere Aufgaben verwendet und fand es sehr nützlich, es zu haben. Der obige Befehl erzeugt zwar ein Video, die Bilder werden jedoch zu schnell angezeigt und der Punkt des Videos wird entfernt. Ich habe versucht, die Werte zu verändern und kann es verbessern, aber nicht genau das, was ich will. Ein Versuch (Einstellung -r 1IIRC) ergab ein einziges 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!

2

1 Antwort auf die Frage

2
Gyan

Wenn Sie die Bilder umbenennen, um fortlaufend nummeriert zu werden, können Sie verwenden

ffmpeg -y -framerate 1 -i <path>\%06d.jpg -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4 

Durchnumeriert, wie in 000001.jpg, 000002.jpg, 000003.jpg... Beachten Sie, dass in jedem Namen genau 6 Zeichen sind, die die erfüllt %06dauf ffmpeg weitergegeben.

Wenn Sie nicht umbenennen möchten, erstellen Sie eine Textdatei des Formulars.

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 
Ich habe die Bilder bereits im Format "yyyyMMdd_000001.jpg" usw. umbenannt, aber wenn ich Ihren Befehl ausführe, erhalte ich dasselbe Ergebnis, das ich zuvor mit FFMPEG eines einzigen Bildes im gesamten Video (41 Minuten) gesehen habe. Würde der Name dieses oder etwas anderes verursachen ?! neildeadman vor 5 Jahren 0
Fügen Sie "-report" zu Ihrer Ausführung hinzu und fügen Sie ihn in Ihren Q ein. Gyan vor 5 Jahren 0
Mit dieser Anzahl von Bildern war das Protokoll zu lang, um in Pastebin gepostet zu werden. Daher reduzierte ich die Anzahl der verarbeiteten Bilder. Gleiches Ergebnis: https://pastebin.com/03CTErCu neildeadman vor 5 Jahren 0
Das Protokoll zeigt keine Fehler. es ist wie erwartet. Kannst du die Ausgabe teilen? Gyan vor 5 Jahren 0
Du meinst das eigentliche Video? neildeadman vor 5 Jahren 0
Ja. Das ist der Nestweg, den man überprüfen kann. Gyan vor 5 Jahren 0
OK, also habe ich es hochgeladen, aber als ich es angesehen habe, hat es funktioniert! Aus der Datei auf meiner lokalen Festplatte ausprobiert und noch ein einzelnes Bild angezeigt. Versuchte einen anderen Spieler und es hat funktioniert! Es scheint also ein Problem mit VLC zu sein, hätte nie gedacht, dass VLC ein Problem haben würde! neildeadman vor 5 Jahren 0
Es gab einen langjährigen Fehler mit niedrigen Frameraten im VLC. Vor ein paar Monaten behoben. Gyan vor 5 Jahren 0
Die neueste Version von VLC löst das Problem tatsächlich. Vielen Dank! neildeadman vor 5 Jahren 0