Rotieren eines Videos mit ffmpeg

Rotieren mit ffmpeg


Um ein Video zu rotieren, gibt es zwei HauptMöglichkeiten:

  1. Neu rendern (langsamer aber zuverlässig)
  2. Nur die MetaDaten anpassen (sehr viel schneller aber fehleranfälliger)

Und wir wollen nicht nur das Bild im Video rotieren. Weil dann Teile des Bildes abgeschnitten werden und schwarze Balken an den Rändern entstehen:

rotieren um 90° mit schwarze Balken

Um das zu vermeiden, wollen wir das gesamte Video rotieren, zusammen mit seiner Ausrichtung. Das heist, aus einem horizontalen Video wird ein vertikales Video. Oder aus einem vertikalen wird ein horizontales Video.

Dazu wird sowohl das Bild im Video rotiert, aber auch das SeitenVerhältnis des Videos angepasst:

rotieren um 90° ohne schwarze Balken



1. Neu rendern (langsamer aber zuverlässig)

Wenn wir das Video rotieren und dafür komplett neu rendern, dann dauert das etwas länger, als wenn wir nur MetaDaten dafür anpassen würden.

Aber dafür können wir sicher sein, dass jedes Video-Programm mit dem neuen Video klar kommt und es gibt keine Probleme.

90° (90° mit dem Uhrzeigersinn)

rotieren um 90°

ffmpeg -i "input.mp4" -vf "rotate=90*PI/180:oh=iw:ow=ih" "output.mp4"

-90° (90° gegen den Uhrzeigersinn)

rotieren um -90°

ffmpeg -i "input.mp4" -vf "rotate=-90*PI/180:oh=iw:ow=ih" "output.mp4"

180°

rotieren um 180°

ffmpeg -i "input.mp4" -vf "rotate=180*PI/180" "output.mp4"

2. Nur die MetaDaten anpassen (sehr viel schneller aber fehlerAnfälliger)

Jetzt wollen wir nur die Metadaten so anpassen, dass das Video gedreht werden soll. Das geht sehr viel schneller, weil das Video dafür nicht neu gerendert werden muss, sondern fast komplett kopiert werden kann.

Achtung: Das kann zu Fehlern in einigen Video-Programmen führen, wenn diese die Metadaten nicht beachten!

Wenn man das Video aber nur selbst verwenden will und die eigene verwendete Software damit klar kommt, kann das eine sehr schnelle Aternative sein.

Achtung: Es kann sein, dass z.B. ein Hochkant-Video (Portrait-Video) in seinen MetaDaten schon den Rotations-Wert 90 oder -90 hat! Dann müssen wir ein wenig rumprobieren, welcher der Werte der passende für uns ist: 0, 90, -90 oder 180.

Das kann man ja aber einfach ausprobieren, weil die Methode ja sowieso so schnell geht.

90° (90° mit dem Uhrzeigersinn)

rotieren um 90°

ffmpeg -i "input.mp4" -map_metadata 0 -metadata:s:v rotate="-90" -codec copy "output.mp4"

-90° (90° gegen den Uhrzeigersinn)

rotieren um -90°

ffmpeg -i "input.mp4" -map_metadata 0 -metadata:s:v rotate="90" -codec copy "output.mp4"

180°

rotieren um 180°

ffmpeg -i "input.mp4" -map_metadata 0 -metadata:s:v rotate="180" -codec copy "output.mp4"