HowTo: Rotate a video using ffmpeg
28 October 2011
Posted by on
Note:I am using Linux and have not tested this on other operating systems, so your results may vary.
I recently received a video from someone with a request to post it to a video hosting site. It all sounded simple until I found that the video had been recorded using an iPad in landscape mode so when I played the video the image was rotated. Before posting it I was going to have to rotate the video so that playback looked normal but how was I going to do that?
I first considered a video editor but the ones I considered had too many dependencies so I continued my search and eventually found a solution here: http://stackoverflow.com/questions/3937387/rotating-videos-with-ffmpeg, which gave instructions on using ffmpeg’s “transpose” feature to rotate the video.
For my task here’s the command line I used. This is to entered as one line, but may be appear wrapped in your browser:
ffmpeg -i <input_video_filename> -vf "transpose=1" -r 30 -sameq -acodec copy <output_video_filename>
The “transpose” function is one of ffmpeg’s many video filters which, according to the ffmpeg man page is used to “Transpose rows with columns in the input video and optionally flip it.” Below is a list of other transpose parameters and what they do. For full details, refer to the transpose video filter section of ffmpeg’s man page for details of the necessary values.
0 = 90CounterCLockwise and Vertical Flip (default)
1 = 90Clockwise
2 = 90CounterClockwise
3 = 90Clockwise and Vertical Flip
Note: In this example I used three additional parameters:
- “-acodec copy” parameter, which instructs ffmpeg to copy the audio, not process it again (Note: Thanks to a comment on this blog entry from Tim;
- “-sameq” parameter so that the video’s original quality was not lost during the rotation because without it ffmpeg degraded quality;
- “-r 30″ to maintain a framerate of 30 frames per second.