FFmpeg kann Bilder aus Videos aufnehmen, die als Miniaturansichten zur Darstellung des Videos verwendet werden können. Die gebräuchlichsten Methoden dazu sind im FFmpeg-Wiki erfasst .
Aber ich möchte nicht in bestimmten Abständen zufällige Bilder auswählen. Ich habe einige Optionen gefunden, die Filter in FFmpeg verwenden, um Szenenänderungen zu erfassen:
Der Filter thumbnail
versucht, die repräsentativsten Frames im Video zu finden:
ffmpeg -i input.mp4 -vf "thumbnail,scale=640:360" -frames:v 1 thumb.png
und der folgende Befehl wählt nur Frames aus, die mehr als 40% der Änderungen im Vergleich zum vorherigen aufweisen (und daher wahrscheinlich Szenenänderungen sind), und generiert eine Sequenz von 5 PNGs.
ffmpeg -i input.mp4 -vf "select=gt(scene\,0.4),scale=640:360" -frames:v 5 thumb%03d.png
Infogutschrift für die obigen Befehle an Fabio Sonnati . Die zweite schien besser zu sein, da ich n Bilder bekommen und die besten auswählen konnte. Ich habe es versucht und es hat das gleiche Bild 5 Mal erzeugt.
Weitere Nachforschungen führten mich zu:
ffmpeg -i input.mp4 -vf "select=gt(scene\,0.5)" -frames:v 5 -vsync vfr out%02d.png
-vsync vfr
stellt sicher, dass Sie verschiedene Bilder erhalten. Dies wählt immer noch das erste Bild des Videos aus. In den meisten Fällen ist das erste Bild ein Abspann / Logo und nicht aussagekräftig. Deshalb habe ich eine -ss
3 hinzugefügt , um die ersten 3 Sekunden des Videos zu verwerfen.
Mein letzter Befehl sieht so aus:
ffmpeg -ss 3 -i input.mp4 -vf "select=gt(scene\,0.5)" -frames:v 5 -vsync vfr out%02d.jpg
Das war das Beste, was ich tun konnte. Mir ist aufgefallen, dass ich nur 5 Videos auswähle, die meistens vom Anfang des Videos stammen und möglicherweise wichtige Szenen verpassen, die später im Video auftreten
Ich würde gerne Ihr Gehirn für andere bessere Optionen auswählen.
mjpeg
Encoder auch für mich verwendet wird, und ich habe auch überprüft , ob jpegoptim
und exiv2
, beide funktionieren für mich mit allen JPG-Ergebnissen Ihrer Beispielbefehle.
libopenjpeg
.. nicht sicher, ob das einen Unterschied macht.