I\'m looking for a way to rotate videos shot with my Nexus 4 on my Debian Wheezy sytem. The videos are shot in portrait mode and I would like to rotate them to landscape mod
Rotation=0 fixed my issue. I started recording video in portrait mode, realized my mistake and immediately turn my phone to landscape to continue recording. My iphone had marked the video as portrait for the entire video.
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4
Fixed it.
If you just want to change the metadata such that mediaplayers that consider the flag play the file rotated, try something like:
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
as found elsewhere on stackoverflow.
FFmpeg
and similar programs change the metadata even with the -map_metadata
option. exiftool
can read the rotation matrix and rotation flag, and since version 10.89 also write it as described below.
To get true lossless (incl. metadata) rotation, I couldn't find a solution, so I grabbed a hex editor (eg HxD) and analyzed the rotated video files.
vide
to find the metadata of the video track trak...\tkhd
@
sign (HEX 40)no rotation:
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40
180°:
FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40
90° cw:
00 00 00 00 00 01 00 00 00 00 00 00 FF FF 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40
90° ccw:
00 00 00 00 FF FF 00 00 00 00 00 00 00 01 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40
Alter the file as you need it, and it should be rotated in players that support the rotation flag (most current players do).
In case your video contains stereo audio, this is obviously not switched, so in case you want the sound to match with video rotation (180°), you need to switch the left and right channels.
This answer is simply a summary of the comments provided by LordNeckbeard.
Rotating without re-encoding is not possible unless:
To correctly understand the steps needed to this, one should start by reading or at least skimming this question:
What are the differences and similarities between ffmpeg, libav, and avconv?
Summary: avconv is a fork of ffmpeg, debian maintainer chose avconv, you have to compile the correct ffmpeg from source.
The next step would be compiling the correct ffmpeg from source as is detailed here:
Compilation guide of ffmpeg for Debian
The final step is using the commands found in other posts:
How to flip a video 180° (vertical/upside down) with FFmpeg? or Rotating videos with FFmpeg
Summary: ffmpeg -vfilters "rotate=90" -i input.mp4 output.mp4
There are several things that you've touched on in your question:
avprobe original.mp4
so that it can be ascertained.