ffmpeg-Bildeingabe verwendet gerade oder ungerade Eingabeebene in Windows

ffmpeg-Bildeingabe verwendet gerade oder ungerade Eingabeebene in Windows

Es gibt mehrere Lösungen, um jedes ungerade oder gerade Bild auf Filterebene auszuwählen, und sie alle funktionieren. Aber in meinem Fall habe ich eine Eingabe von 15360 x 8640 .jpg-Dateien, bei denen es einen großen Unterschied macht, ob ich alle Bilder eingebe und jede Sekunde im Filter wegwerfe oder ob ich jedes zweite Eingabebild überspringe. Das würde die Kodierung erheblich beschleunigen. Meine normale Eingabe ist (für fünfstellige numerische Dateien, läuft unter Win10 x64):

ffmpeg.exe -framerate 60 -i %05d.jpg -vcodec libx264 out.mkv

Was ich versucht habe (entnommen ausdieser Thread, funktioniert möglicherweise nur unter Linux, aber ich konnte es nicht überprüfen):

ffmpeg.exe -framerate 60 -i %04d%[13579%].jpg -vcodec libx264 out.mkv

und verschiedene Varianten mit und ohne Glob-Optionen und so weiter. Alle schlagen fehl. Das Ergebnis lautet immer „%04d%[13579%].jpg: Keine solche Datei oder kein solches Verzeichnis“ oder etwas Ähnliches.

Ein funktionierendes Beispiel für jeden zehnten Frame (z. B. 00001, 00011, 00021 usw.).

ffmpeg.exe -framerate 60 -i %04d1.jpg -vcodec libx264 out.mkv

Hat jemand das Problem bereits gelöst oder eine neue Idee?

Antwort1

Derzeit eine zweistufige Lösung.
Liste erstellen:

dir *1.jpg *3.jpg *5.jpg *7.jpg *9.jpg /b /on | c:\prog\unix\sed "s/^/file /" > "!list.txt"

Verwendungsliste:

ffmpeg.exe -r 60 -f concat -safe 0 -i "!list.txt" -vcodec libx264 out.mkv

Pro: Ich spare etwa ein Terabyte, nur um eine Kopie dieser Dateien mit einem anderen Namen als Eingabe oder Dekodierungszeit auf Eingabeebene zu haben. Fast 1,5-mal schneller als die Konvertierung auf Filterebene mit meinen riesigen .jpgs als Eingabe.
Contra: Scheint mehr RAM zu erfordern als die Verwendung auf Filterebene, aber warum?
Hat jemand eine bessere Lösung?

verwandte Informationen