Ich möchte Ubuntu und vorzugsweise Standardpakete wie ffmpeg verwenden, um eine .3gp-Videodatei um 90 Grad in eine beliebige Richtung zu drehen. Vorzugsweise eine Befehlszeile oder ein Python-Skript.
Wie kann ich das machen?
Ich möchte Ubuntu und vorzugsweise Standardpakete wie ffmpeg verwenden, um eine .3gp-Videodatei um 90 Grad in eine beliebige Richtung zu drehen. Vorzugsweise eine Befehlszeile oder ein Python-Skript.
Wie kann ich das machen?
Antworten:
unter Verwendung von VLC , können Sie das Video , indem Sie auf Tools >> Einstellungen drehen ...
Und wählen Sie "Alle" für die Show-Einstellungen. Gehen Sie dann zu: Video >> Filter >> Drehen
Nachdem Sie den gewünschten Grad eingestellt haben, können Sie unter Extras> Effekte und Filter> Videoeffekte> Geometrie ... drehen.
die, die ich getestet habe, ist mp4, aber ich glaube, dass VLC auch 3GP unterstützen kann. hoffe das hilft. :)
Von der Kommandozeile mit ffmpeg:
ffmpeg -i input.3gp -filter:v transpose=1 \
-c:v libx264 -preset veryfast -crf 22 \
-c:a copy \
-metadata:s:v rotate="" \
output.3gp
transpose=1
dreht das Video um 90 Grad im Uhrzeigersinn; Zum Drehen gegen den Uhrzeigersinn verwenden Sie transpose=2
. Weitere Informationen finden Sie in der Transponierungsdokumentation .
-metadata:s:v rotate=""
entfernt alle vorhandenen Metadaten für die Videodrehung; Andernfalls ffmpeg
wird es kopiert, was dazu führen kann, dass Ihr Player eine zusätzliche unerwünschte Drehung ausführt.
Informationen zu den Einstellungen für die Videokodierung finden Sie in diesem Handbuch zur H.264-Kodierung und im Handbuch zur AAC-Kodierung, wenn Sie das Audio neu kodieren möchten, anstatt das Streaming zu kopieren .
Ich habe ein ähnliches Problem gelöst - ich hatte eine .MOV, die verkehrt herum aufgenommen wurde (dh um 180 Grad gedreht) und die ich korrigieren wollte.
Auf meinem Ubuntu 14.04-System lief ich avconv
mit im Wesentlichen den gleichen Befehlszeilenoptionen wie ffmpeg
in der Antwort von evilsoup . Anscheinend unterstützt es keine transpose
Option für eine 180-Grad-Drehung, daher habe ich die 90-Grad-Drehung transpose=1
zweimal im Uhrzeigersinn ausgeführt .
Als ich minimale Optionen ausprobierte, erhielt ich eine Meldung, dass:
encoder 'aac' is experimental and might produce bad results.
Add '-strict experimental' if you want to use it.
und die Ausgabedatei hatte die Länge Null, also habe ich die hinzugefügt -strict experimental
.
Befehlszeilen, die funktionierten, waren:
avconv -i IMG_orignl.MOV -filter:v 'transpose=1' -strict experimental IMG_interm.MOV
avconv -i IMG_interm.MOV -filter:v 'transpose=1' -strict experimental IMG_result.MOV
Das Ergebnis war zufriedenstellend mit ungeklärten Nebenwirkungen:
Nicht, dass ich mich beschwere: diese sind wünschenswert; Ich verstehe nur nicht, warum sie entstanden sind ...
avconv
Befehlszeilen vollständig dargestellt und nicht nur die Unterschiede zum ffmpeg
Befehl. Ihre Antwort sollte autark sein; Die andere Antwort könnte verschwinden. (3) Viel Glück!
-filter:v transpose=1 …
.
Seit der Beantwortung dieser Frage wurden einige Änderungen an libav vorgenommen. In einem Versuch, dies aktuell und nützlich zu halten, werde ich Folgendes bereitstellen:
Sie können dies mit den neuesten Versionen von ffmpeg
und avconv
mithilfe des transponierten Videofilters erreichen.
avconv -i inputfile -vf transpose=clock outputfile
für Rechtslauf.
In ffmpeg ist die Syntax dieselbe.
ffmpeg -i inputfile -vf transpose=clock outputfile
wo Eingabedatei der unterstützte Eingabevideodatei und Ausgabedatei ist die gewünschte Ausgabedatei.
Für Gegenuhrzeigerdrehung ersetzen Takt mit cclock
Hier ist ein Auszug aus der Dokumentation:
‘cclock_flip’
Rotate by 90 degrees counterclockwise and vertically flip. (default)
‘clock’
Rotate by 90 degrees clockwise.
‘cclock’
Rotate by 90 degrees counterclockwise.
‘clock_flip’
Rotate by 90 degrees clockwise and vertically flip.
Quellen:
https://libav.org/avconv.html#transpose
https://ffmpeg.org/ffmpeg-filters.html#transpose-1
Testen unter Ubuntu 14.04.5 LTS, Ubuntu 16.04, Ubuntu 18.04
ffmpeg
arbeitete für mich (habe es nicht versucht avconv
)
ffmpef
enthält eine menge unnötiger argumente, danke!