I have a video file. I open it with MediaInfo utility and I can see a video stream in this file having attribute Rotation 90 (along with other attributes such as CodecID, bitrate etc).
Now I have another video file which does not have that attribute Rotation 90, it does not have the Rotation attribute at all.
Can I use ffmpeg.exe so that it produces output file with Rotation 90 attribute added and with no other changes? I don't really want to do any transform, just want to set the Rotation attribute.
I've tried the -metadata
option to no avail.
This works with recent FFmpeg:
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
This will stream copy the bitstreams, so no encoding is performed. Only the metadata of the first video stream (v:0
) is changed here and the player will show the video in a rotated way. (Not all players will support this.)
Additional notes:
If you want to "physically" rotate the video, you have to use the
transpose
filter. Filtering will require re-encoding, so you will have to remove-c copy
.If you omit
-c copy
, and want to encode instead of only re-muxing, thenffmpeg
will automatically rotate the video if there is any existing rotate metadata. You can disable this behavior with-noautorotate
.
来源:https://stackoverflow.com/questions/15335073/can-i-set-rotation-field-for-a-video-stream-with-ffmpeg