![ffmpeg-Bildeingabe verwendet gerade oder ungerade Eingabeebene in Windows](https://rvso.com/image/1592559/ffmpeg-Bildeingabe%20verwendet%20gerade%20oder%20ungerade%20Eingabeebene%20in%20Windows.png)
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?