MP4 files can have a
rotate flag, which tells the player to rotate the video during playback, without changing the way the actual video bitstream is encoded and oriented. VLC does not support this flag, so if it shows the video upside down, then it actually is upside down and needs to be rotated.
The question is what you want to do with the video. You basically have two choices:
- Keep it as-is and remove the rotation flag. If you want to edit the video later, flip it in whatever program you use to do so. If you want to play it, choose a player that supports on-the-fly rotation.
- Rotate and transcode the video so it has a proper orientation. This will degrade the video quality a little though.
You can do all of that with
ffmpeg. Download a static build for your operating system, and extract it to a directory, e.g. so that the
ffmpeg executable file is in
~/Downloads. Then open up a terminal window and navigate to said directory:
This should run the
ffmpeg binary. For more info read our blog article on
Here are the actual commands you can use. If you want to keep the actual video bitstream and remove the rotation flag, you only need to remove the metadata for the first video stream
v:0, and copy the video and audio bitstreams (
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4
If you want to transcode the video, flipping it by 180°, you need to specify a video encoder (here,
libx264) and the flipping filter. The audio stream will be copied over.
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -filter:v "hflip,vflip" -c:a copy output.mp4
You can adjust the CRF (Constant Rate Factor) to change the quality of the video. Sane values are anywhere between 18 and 28, depending on your input quality. Lower means better quality, so if your video ends up looking worse than the original, try a lower CRF value.