ffmpeg-Zuschneiden: „Ungültig, zu groß oder keine positive Größe für die Breite“

ffmpeg-Zuschneiden: „Ungültig, zu groß oder keine positive Größe für die Breite“

Ich versuche, mit ffmpeg Miniaturansichten von Bildern zu erstellen. Der Ordner enthält verschiedene JPEG-Dateien mit unterschiedlichen Auflösungen.

ffmpeg -y -i input1.jpg -filter_complex "scale=(iw*sar)*max(238/(iw*sar)\,358/ih):ih*max(238/(iw*sar)\,358/ih), crop=238:358" thumbnail.jpg

Dies funktioniert mit den meisten Bildern im Ordner, crop=238:358schlägt jedoch bei bestimmten Bildauflösungen fehl:

input1.jpg: 500x800Größenänderung und Zuschneiden erfolgreich

input2.jpg: 470x800Größenänderung und Zuschneiden schlagen fehl:

Ungültige zu große oder nicht positive Größe für Breite „238“ oder Höhe „358“

Das Problem tritt auf, wenn skalierte Bilder aufgrund der Skalierung des Seitenverhältnisses 237pxnicht angezeigt werden.238px

Da es sich um ein Skript handelt, das eine Reihe von Dateien verarbeitet, suche ich nach einer Lösung, die alle Bildauflösungen verarbeiten kann

Antwort1

Der Skalenfilter kürzt das Ergebnis von Ausdrücken auf eine Ganzzahl, und es ist möglich, dass ein Ausdruck z. B. 237,999 ergibt, das auf 237 gekürzt wird. Die Problemumgehung besteht darin, die Koeffizienten leicht zu erhöhen, so

ffmpeg -y -i input1.jpg -vf "scale=(iw*sar)*max(238.1/(iw*sar)\,358.1/ih):ih*max(238.1/(iw*sar)\,358.1/ih), crop=238:358" thumbnail.jpg

verwandte Informationen