Ich hatte kürzlich eine sehr ähnliche Aufgabe und ich würde sagen, dass es immer noch keine perfekte Lösung gibt (Stand Oktober 2018). Dies ist der Nebeneffekt der Farbumwandlung von RGB nach YUV in RGB mit niedriger Genauigkeit. Selbst einige "verlustfreie" libvpx-vp9 -lossless
Codec- Varianten (z. B. ) erzeugen aufgrund des YUV-Farbraums verzerrte Farben.
Wenn nicht exakte Farben akzeptabel sind, kann der libvpx- Codec einen guten Job machen:
ffmpeg -r 25 -i image%03d.png -c:v libvpx -crf 4 -b:v 0 output.webm
Mit diesen Einstellungen wurde eine geringfügige Farbverschiebung oder sogar die exakten Farben für einige Framesets erzeugt. VPx-Codecs werden weitgehend unterstützt (alle gängigen Browser außer IE und Safari) und erzeugen eine angemessene Dateigröße.
Wenn die exakten Farben unbedingt erforderlich sind, müssen wir die Farbraumkonvertierung vermeiden. Die einzige Cross-Browser-Lösung, die ich entwickelt habe, ist die Verwendung von animierten PNG- Bildern.
ffmpeg
hat nur eine sehr grundlegende Unterstützung für apng, daher ist es besser andere Tools zu verwenden, zBapngasm
:apngasm output.png image001.png 1 25
es funktioniert überall außer IE und Edge (dort wird es zu einem statischen ersten Frame zurückfallen). Die Dateigrößen sind riesig, aber das ist der Preis für die wirklich verlustfreie Kodierung.
- Der libx264rgb Codec sollte auch erwähnt werden, - mit ihm wird die richtige Art und Weise der Codierung, die genauen RGB - Farben sein, wenn / falls Browsern unterstützt.