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
.