Wir generieren eine Menge von Miniatur-GIFs, deren Qualität nicht annähernd so wichtig ist wie die Zeit, die für deren Generierung erforderlich ist. Das Generieren von qualitativ hochwertigen GIFs mit ffmpeg ist sehr gut abgedeckt, aber ich habe nicht viel Glück, herauszufinden, wie Sie qualitativ minderwertige GIFs so schnell wie möglich generieren können.
Die Palettenberechnung nimmt mit dem folgenden Befehl die meiste Ausführungszeit in Anspruch (entnommen aus der Antwort des Filtergraphen mit mehreren Ketten hier: So erstellen Sie effizient ein GIF mit der besten Palette aus einem Videoteil direkt aus dem Web ):
ffmpeg -y -threads 8 -r 24 -f image2 -start_number 1 -i "frames.%04d.jpg" -filter_complex "fps=24,scale=150:-1:flags=fast_bilinear,split=2 [a][b]; [a] palettegen [pal] fifo [b]; [b] [pal] paletteuse" output.gif
Die Ausführungszeit dieses Befehls mit 1000 Bildern beträgt ungefähr 72 Sekunden. Ungefähr 67 Sekunden davon sind der Palettendurchlauf, und dann durchläuft er die eigentliche GIF-Erzeugung in ungefähr 5 Sekunden. Ich möchte die gesamte Ausführungszeit so weit wie möglich verkürzen und bereit sein, viel Bildqualität für die Geschwindigkeit zu opfern.
ffmpeg -y -r 24 -f image2 -start_number 1 -i "frames.%04d.jpg" -filter:v "scale=150:-1:flags=fast_bilinear" output.gif
Die beiden folgenden Probleme: 1) Es wurden nur 13 Sekunden gespart (59 Sekunden statt 72) und 2 ) Ich bin nicht zu 100% sicher, dass dieser Befehl die Palettenberechnung vollständig eliminiert (nur dass die Palettenberechnung, die ich zuvor angegeben habe, nicht enthalten ist).
ffmpeg -i <input> <scale> <output.gif>
.
[b]
Etikett. In beiden Fällen ist die Verwendung der Palette nach einem Schnelltest etwa 200 ° langsamer. Es überhaupt nicht zu benutzen, ist für Sie keine Option?