556 Stimmen

Drehen von Videos mit FFmpeg

Ich habe versucht, herauszufinden, wie man Videos mit FFmpeg drehen kann. Ich arbeite mit iPhone-Videos, die im Hochformat aufgenommen wurden. Ich weiß, wie ich die aktuellen Drehgrade mit MediaInfo (ausgezeichnete Bibliothek, btw), aber ich hänge jetzt bei FFmpeg fest.

Nach dem, was ich gelesen habe, müssen Sie eine vfilter Option. Nach dem, was ich sehe, sollte es wie folgt aussehen:

ffmpeg -vfilters "rotate=90" -i input.mp4 output.mp4

Ich kann das aber nicht zum Laufen bringen. Erstens, -vFilter gibt es nicht mehr, es ist jetzt nur noch -vf . Zweitens: Ich erhalte diese Fehlermeldung:

No such filter: 'rotate'
Error opening filters!

Soweit ich weiß, habe ich eine aktivierte Version von FFmpeg mit allen Optionen. Läuft ffmpeg -filter zeigt dies:

Filters:
anull            Pass the source unchanged to the output.
aspect           Set the frame aspect ratio.
crop             Crop the input video to x:y:width:height.
fifo             Buffer input images and send them when they are requested.
format           Convert the input video to one of the specified pixel formats.
hflip            Horizontally flip the input video.
noformat         Force libavfilter not to use any of the specified pixel formats
 for the input to the next filter.
null             Pass the source unchanged to the output.
pad              Pad input image to width:height[:x:y[:color]] (default x and y:
 0, default color: black).
pixdesctest      Test pixel format definitions.
pixelaspect      Set the pixel aspect ratio.
scale            Scale the input video to width:height size and/or convert the i
mage format.
slicify          Pass the images of input video on to next video filter as multi
ple slices.
unsharp          Sharpen or blur the input video.
vflip            Flip the input video vertically.
buffer           Buffer video frames, and make them accessible to the filterchai
n.
color            Provide an uniformly colored input, syntax is: [color[:size[:ra
te]]]
nullsrc          Null video source, never return images.
nullsink         Do absolutely nothing with the input video.

Mit den Optionen für vflip y hflip sind großartig und alles, aber sie bringen mich nicht ans Ziel. Ich brauche die Möglichkeit, Videos mindestens um 90 Grad zu drehen. 270 Grad wäre auch eine hervorragende Option. Wo sind die Optionen zum Drehen geblieben?

3voto

Knio Punkte 5935

Ich hatte das gleiche Problem wie OP und bekam die No such filter: 'rotate' Fehler, obwohl der Drehfilter als unterstützt angezeigt wird in --filters . Ich musste mich umdrehen ein beliebiger Winkel und so funktionierten alle aktuellen Antworten, die Alternativen zum Drehen um ein Vielfaches von 90 Grad sind, nicht. Ich habe herausgefunden, dass die Syntax für -vf erfordert Leerzeichen um die Token was im Widerspruch zur offizielle Dokumente .

ändern:

-vf 'rotate=1.23'

zu

-vf 'rotate = 1.23' hat es bei mir funktioniert.

Vollständiges Beispiel:

ffmpeg.exe -i input.mp4 -vf "rotate = 3.0 , crop = 1920:1080" out.mp4

FWIW dies ist auf ffmpeg Version 4.3.2

2voto

smoyth Punkte 599

Die Antwort von Alexy hätte bei mir fast funktioniert, aber ich bekam diese Fehlermeldung:

Zeitbasis 1/90000 nicht vom MPEG-4-Standard unterstützt, die maximale zulässiger Wert für den Nenner der Zeitbasis ist 65535

Ich musste nur einen Parameter (-r 65535/2733) zum Befehl hinzufügen, und schon funktionierte es. Der vollständige Befehl lautete wie folgt:

ffmpeg -i in.mp4 -vf "transpose=1" -r 65535/2733 out.mp4

2voto

f b Punkte 115

Smartphone: Aufzeichnung eines Videos im Hochformat

Wollte ich es an eine Webseite senden, war es 90° nach links gedreht (gegen den Uhrzeigersinn, Querformat) hmm.

ffmpeg -i input.mp4 -vf "rotate=0" output.mp4

tut es. Ich habe das Hochformat wiederhergestellt

debian buster: ffmpeg --version ffmpeg Version 4.1.4-1~deb10u1 Copyright (c) 2000-2019 die FFmpeg-Entwickler

1voto

ldig Punkte 19

Leider unterstützt die Ubuntu-Version von ffmpeg keine Videofilter.

Sie müssen avidemux oder einen anderen Editor verwenden, um denselben Effekt zu erzielen.

Für den programmatischen Weg wurde mencoder empfohlen.

1voto

AllanRibas Punkte 454

Bei mir funktioniert das folgendermaßen

Drehen im Uhrzeigersinn

 ffmpeg -i "path_source_video.mp4" -filter:v "transpose=1" "path_output_video.mp4"

Drehen gegen den Uhrzeigersinn

 ffmpeg -i "path_source_video.mp4" -filter:v "transpose=0,transpose=1,transpose=0" -acodec copy "path_output_video.mp4"

das von mir verwendete Paket zeranoe

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X