2013-03-11 7 views
24

Ich habe eine Videodatei. Ich öffne es mit MediaInfo Dienstprogramm und ich kann einen Video-Stream in dieser Datei mit dem Attribut Rotation 90 (zusammen mit anderen Attributen wie CodecID, Bitrate usw.) sehen.Kann ich ein Rotationsfeld für einen Video-Stream mit FFmpeg einstellen?

Jetzt habe ich eine andere Video-Datei, die nicht das Attribut Rotation 90 hat, er hat nicht die Rotation Attribut alle an.

Kann ich ffmpeg.exe so dass es erzeugt Ausgabedatei mit Rotation 90 Attribut hinzugefügt und ohne weitere Änderungen? Ich möchte wirklich keine Transformation durchführen, sondern nur das Rotationsattribut einstellen.

Ich habe versucht, die -metadata Option ohne Erfolg.

Antwort

57

Dies funktioniert mit dem letzten FFmpeg:

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

Dies wird die Bitströme stream copy, so wird keine Codierung durchgeführt. Nur die Metadaten des ersten Videostroms (v:0) werden hier geändert und der Spieler wird das Video in einer gedrehten Weise zeigen. (Nicht alle Spieler werden dies unterstützen.)

Zusätzliche Hinweise:

  • Wenn Sie wollen "physisch", um das Video drehen, Sie use the transpose filter haben. Die Filterung erfordert eine Neucodierung, daher müssen Sie -c copy entfernen.

  • Wenn Sie weglassen -c copy, und statt nur wieder Muxing kodieren mögen, dann ffmpeg wird das Video automatisch drehen, wenn es ein vorhandener drehen Metadaten. Sie können dieses Verhalten mit -noautorotate deaktivieren.

+0

Vielen Dank, das ist ausgearbeitet! –

+0

Ich habe neuesten Code von ffmpeg erstellt und es gibt keinen Fehler diesen Befehl in läuft, aber noch Video ist nicht rotating.pls helfen –

+1

@MohitChauhan Bitte beachten Sie, dass dies nicht wirklich das Video drehen. Es legt nur das Rotations-Flag fest, was dazu führt, dass einige Spieler es gedreht anzeigen. Wenn Sie ein Problem mit einem Befehl haben, stellen Sie bitte eine Frage zu [SU] und zeigen Sie den Befehl und dessen vollständige Konsolenausgabe an. – slhck