Bilder mit ffmpeg in ein Quadrat skalieren: EXIF-Orientierung verloren

497
mins

Ich möchte diesen Befehl verwenden, um mehrere JPEG-Bilder in eine gemeinsame Ausgabeauflösung von 1000x1000 zu skalieren, aufzulegen und zu drehen:

ffmpeg -i image.jpg -vf "scale=1000:1000:force_original_aspect_ratio=decrease, pad=1000:1000:(ow-iw)/2:(oh-ih)/2" square.jpg 

(EXIF) Hochformat wird jedoch nicht im Ausgabebild beibehalten ...

Eingang:

enter image description here

Erwartete Ausgabe links, was ich rechts bekomme:

Expected Obtained

Ich gehe davon aus, dass ffmpeg aus verschiedenen Fragen auf der Website die Orientierung selbst erkennt und die Bilder entsprechend verarbeitet. Oder gilt das nur für Videostreams?

Verwenden Sie die neueste Version von ffmpeg (4.0.2).

1
* gilt nur für Videostreams * -> generell ja. FFmpeg induziert keine Oritentation von EXIF. Gyan vor 5 Jahren 0
@Gyan: Schade, bedeutet das, dass die FFmpeg-Werte "iw" und "ih" unabhängig vom Modus Querformat / Hochformat gleich sind? mins vor 5 Jahren 0
Sie werden die Abmessungen des dekodierten Rasters darstellen. Gyan vor 5 Jahren 0

1 Antwort auf die Frage

1
harrymc

Das Anzeigen von Bildern gemäß ihrer EXIF-Ausrichtung ist eine Funktion, die bei Bildbearbeitern oder Bildbearbeitungsbibliotheken üblicher ist.

Ich schlage vor, zuerst alle Bilder in ihre wahre Ausrichtung zu drehen.

Informationen zu den Methoden zum Drehen finden Sie im Beitrag Wie werden Bilder basierend auf EXIF-Daten automatisch gedreht?

Ich habe den FastStone Image Viewer verwendet, um die einzelnen Bilder vor dem Verwenden von ffmpeg zum Erstellen eines Videos zu drehen und einzufügen. Mir fehlt diese Vorverarbeitung der (zukünftigen) Frames definitiv aus der Bibliothek, vielleicht könnte ein Skript mit [FFprobe] (https://www.ffmpeg.org/ffprobe.html) erstellt werden. mins vor 5 Jahren 0