Drehen Sie MP4-Videos ohne Neukodierung
-
21-12-2019 - |
Frage
Ich suche nach einer Möglichkeit, mit meinem Nexus 4 aufgenommene Videos auf meinem Debian Wheezy-System zu drehen.Die Videos werden im Hochformat aufgenommen und ich möchte sie gerne ins Querformat drehen.Vorzugsweise erfolgt die Rotation über die Befehlszeile.
Ich habe mehrere frühere Fragen gefunden, die auf eine gute Lösung hinweisen, aber ich schaffe es scheinbar nicht, sie zum Laufen zu bringen.
Am Anfang stand diese Frage:Videos mit FFmpeg drehen
Aber es zeigt an, dass ffmpeg veraltet ist und ich avconv verwenden sollte.Ich habe diese Frage gefunden, die detailliert beschreibt, wie es weitergehen soll.https://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv
Dies brachte mich dazu, den folgenden Befehl zu verwenden:
avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4
Dies ist allerdings mühsam langsam (bei dem letzten Test habe ich mehr als 6 Stunden für weniger als 3 Minuten Filmmaterial gebraucht) und führt nicht zu einem abspielbaren Film.Ich erhalte auch eine Fehlermeldung in der Protokollausgabe, die besagt, dass die MB-Rate > Level-Grenze ist.
Gibt es hier ein Problem mit der Neucodierung?Sollte ich die Videos von meinem Telefon zunächst in eine andere, „praktikablere“ Kodierung umkodieren, bevor ich die Drehungen anwende?Oder übersehe ich einen weiteren wichtigen Punkt?
Lösung
Wenn Sie nur die Metadaten ändern möchten, so dass Mediaplayer, die das Flagge in Betracht ziehen, die Datei gedreht sind, versuchen Sie, so etwas zu versuchen:
generasacodicetagpre.Wie gefunden an anderer Stelle auf stapelflow .
Andere Tipps
rotation= 0 mein Problem behoben.Ich habe angefangen, Video im Hochformat aufzunehmen, meinen Fehler realisierte und verwandelte mein Handy sofort in die Landschaft, um die Aufnahme fortzusetzen.Mein iPhone hatte das Video als Porträt für das gesamte Video markiert.
generasacodicetagpre.es behoben.
FFmpeg
und ähnliche Programme Ändern Sie die Metadaten sogar mit dem -map_metadata
Möglichkeit. exiftool
kann die Rotationsmatrix und das Rotationsflag lesen und seit Version 10.89 auch wie unten beschrieben schreiben.
Um wirklich verlustfrei zu werden (inkl.Metadaten) Rotation konnte ich keine Lösung finden, also habe ich mir einen Hex-Editor geschnappt (z. B HxD) und analysierte die gedrehten Videodateien.
Echte verlustfreie Rotation von MP4:
- Öffnen Sie MP4 mit dem Hex-Editor und suchen Sie nach
vide
um die Metadaten der Videospur zu finden - Einige Zeilen oben (bei meinen Dateien meist 9, manchmal 12) sollten Sie sehen
trak...\tkhd
- dazwischen sollte ein sein
@
Zeichen (HEX 40) - in den beiden Zeilen davor wird die Rotationsmatrix gespeichert
keine Rotation:
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
180°:
FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
90° rechts:
00 00 00 00 00 01 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
90° gegen den Uhrzeigersinn:
00 00 00 00 FF FF 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40
Ändern Sie die Datei nach Bedarf und sie sollte in Playern gedreht werden, die das Rotationsflag unterstützen (die meisten aktuellen Player tun dies).
Falls Ihr Video Stereoton enthält, ist dieser offensichtlich nicht umgeschaltet. Wenn Sie also möchten, dass der Ton mit der Videodrehung (180°) übereinstimmt, müssen Sie den linken und rechten Kanal umschalten.
In Ihrer Frage haben Sie mehrere Dinge angesprochen:
- Es besteht fast keine Chance, dass Sie ohne Neucodierung rotieren können.Auf die Ausnahme von dieser Regel (MJPEG-Codec) wurde bereits hingewiesen, es ist jedoch unwahrscheinlich, dass Sie sie verwenden, sodass sie den Rahmen dieser Frage sprengt.Ich möchte erwähnen, dass der Grund für diese Fähigkeit darin besteht, dass JPEG über Metadaten konvertiert werden kann.Wenn Sie also in der Lage sind, einen Container zu finden, der über die Metadatenrotation verfügt, können Sie zwar rotieren, aber bisher existiert keiner (oder ist weit genug verbreitet).
- Wenn es Stunden gedauert hat, 3 Minuten des Videos zu drehen und neu zu kodieren, dann kann das Problem an einem liegen enorm Auflösung.Und ich meine riesig!Können Sie bitte die Ausgabe von bereitstellen
avprobe original.mp4
damit es festgestellt werden kann. - Debatten zwischen Libav und FFmpeg sind sehr kontraproduktiv (das sieht man schon an der Menge der hier geposteten Fanartikel).Im Grunde genommen ist es zu einer Spaltung des Projekts gekommen, bei der einige Entwickler in die eine oder andere Richtung gegangen sind. Die Tatsache, dass es dem FFmpeg-Projekt gelungen ist, den Namen beizubehalten, ist nur ein Zufall und es macht keinen Sinn, ein Projekt als Original und ein anderes als Fork zu bezeichnen.Die Unterschiede zwischen den Projekten liegen hauptsächlich im Entwicklungsstil und in der Philosophie.Wenn Sie FFmpeg eher als Open Source und Libav eher als freie Software bezeichnen würden, würden Sie sich nicht allzu sehr irren.Vernünftige Menschen hoffen, dass die Entwickler irgendwann zur Besinnung kommen und die Projekte vielleicht nicht zusammenführen, sondern in größerem Umfang zusammenarbeiten.Als Ubuntu ursprünglich herauskam, gab es in jedem Debian GNU/Linux-Chat riesige Nachrichten wie „Ubuntu ist NICHT Debian!!!!!!“, aber jetzt hat sich die Situation beruhigt und beide Seiten sind mit einem ziemlich zufrieden ein anderer.
Diese Antwort ist einfach eine Zusammenfassung der Kommentare von LordneckBeard.
rotierend ohne Codierung
rotierend ohne Neukodierung ist nicht möglich, es sei denn:
- Ihre Eingabe ist MJPEG
- Sie drehen sich nach der Wiedergabe
mit der Codierung mit dem richtigen FFMPEG
drehenUm die dafür erforderlichen Schritte richtig zu verstehen, sollte man mit dem Lesen oder zumindest dieses Frage anfangen:
Was sind die Unterschiede und Ähnlichkeiten zwischen FFMPEG, Libav und AVCONV?
Summary: AVCONV ist eine Gabel von FFMPEG, der Debian-Betreuer gewählt AVCONV, Sie müssen den richtigen FFMPEG aus der Quelle kompilieren.
Der nächste Schritt würde den korrekten FFMPEG aus der Quelle zusammenstellen, wie hier beschrieben ist:
Compilation Guide von ffmpeg für debian
Der letzte Schritt verwendet die Befehle in anderen Beiträgen:
Wie man ein Video um 180 ° (vertikal / auf dem Kopf stehend) mit ffmpeg dreht? oder Drehen von Videos mit ffmpeg
Zusammenfassung: ffmpeg -vfilters "rotate= 90" -I input.mp4 output.mp4