Finden Sie Rotationsmetadaten aus dem Video in ffmpeg heraus


1

Wenn ich benutze:

ffmpeg -i in.mov -vf "transpose=1" out.mov

Alle .movDateien werden gedreht, aber ich muss automatisch nur die gedrehten Videos erkennen und die Ausrichtung für diese Videos ändern.

Wie kann ich die Drehung oder Ausrichtung des Videos beim Hochladen automatisch erkennen und bei Bedarf drehen, damit alle .movDateien in der richtigen Ausrichtung wiedergegeben werden? Wie kann ich die Metadaten der aktuellen Gradrotation meines Videos abrufen?

Antworten:


2

Konkret angewendet auf Ihre Frage erhalten Sie die Rotation durch: ffprobe -loglevel error -select_streams v:0 -show_entries stream_tags=rotate -of default=nw=1:nk=1 -i in.mov

Legende:

-loglevel error: nur das Drehfeld anzeigen, keine weiteren Infos.

-select_streams v:0: den ersten Videostream verarbeiten (ignorieren, wenn mehrere Videostreams vorhanden sind)

-show_entries stream_tags=rotate: Gibt die Rotationsinformationen aus dem Eingangsvideo zurück

-of default=nw=1:nk=1: Standard-Ausgabeformat verwenden und nichts anderes anzeigen, dh keine Wrapper (nw) und kein Schlüssel (nk)


1

Verwenden Sie ffprobe wie folgt.

ffprobe -i in.mov

Dies sollte dazu führen, dass irgendwo in der Ausgabe ein Feld "Drehen:" angezeigt wird, wenn ein solches Feld in der Datei vorhanden ist.


Heutzutage dreht FFmpeg das Video automatisch, dh wenn ein Rotations-Tag vorhanden ist, wendet es den Filter an und setzt das Tag zurück. Die Übung ist also fehl am Platz.
Gyan

Dies wäre eine schlechte Praxis, da beim Remultiplexen einer Videocontainerdatei mit einem Videostream, der ein Rotationsflag aufweist, eine Transcodierung erfolgt. Es ist nützlich, genau zu wissen, was passiert, um ein Umcodieren zu verhindern.
Alex Folland

1
Die automatische Drehung hat keine Auswirkung darauf, ob der Videostream kopiert wird. Dies kann durch Angabe von-c:v copy
Gyan

Ja, genau deshalb habe ich gesagt, was ich gesagt habe. Das Kopieren des Streams ist ideal. Niemals umcodieren, um einen Rotationsfilter anzuwenden. Geben Sie stattdessen ein Containerformat aus, das Rotations-Tags wie mp4 unterstützt (mkv scheint dies nicht zu unterstützen; wurde kürzlich ausprobiert), und verwenden Sie so etwas wie -c copy -metadata:s:v:0 rotate=90in der ffmpeg-Befehlszeile.
Alex Folland

1
Ich denke, hier sind einige Linien gekreuzt. Wir wissen nicht, ob die Zielspieler des OP das Rotations-Tag respektieren. In diesem Fall müsste das OP das Q nicht fragen. Das OP backt permanent mit dem Transponierfilter in der richtigen Ausrichtung. Zu diesem Zweck ist eine Umcodierung erforderlich, und ich bin der Meinung, dass die neuesten ffmpeg-Versionen sich automatisch darum kümmern.
Gyan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.