34

I want to use Ubuntu and preferably standard packages such as ffmpeg to rotate a .3gp video file by 90 degrees in any direction. Preferably a command line or Python script.

How can I do that?

slhck
  • 223,558
  • 70
  • 607
  • 592
justinhj
  • 1,342
  • 4
  • 18
  • 27
  • I found that ffmpeg was able to do this. See, e.g. [Ubuntu forums: rotate video 90 degrees](http://ubuntuforums.org/showthread.php?p=10905703#post10905703) – Simon Dec 15 '11 at 12:26
  • Also see [How to flip a video 180° (vertical/upside down) with FFmpeg?](http://superuser.com/questions/578321/how-to-flip-a-video-180%C2%B0-vertical-upside-down-with-ffmpeg) – llogan Jun 08 '15 at 16:59

6 Answers6

28

From the command-line, with ffmpeg:

ffmpeg -i input.3gp -filter:v transpose=1 \
-c:v libx264 -preset veryfast -crf 22 \
-c:a copy \
-metadata:s:v rotate="" \
output.3gp
  • transpose=1 will rotate the video 90 degrees clockwise; to rotate anti-clockwise, use transpose=2. See the transpose documentation for a bit more information.

  • -metadata:s:v rotate="" will strip any existing video stream rotation metadata; otherwise ffmpeg will copy it which may cause your player to apply additional unwanted rotation.

  • For information on the video encoding settings here, see this H.264 encoding guide and the AAC encoding guide if you want to re-encode the audio instead of stream copying.

llogan
  • 57,139
  • 15
  • 118
  • 145
evilsoup
  • 13,097
  • 3
  • 59
  • 80
  • This better answers the question as it explains how to do it from the command line with ffmpeg, as specified in the original question. I think this answer should be marked as correct. As of May 2017 on Fedora 25, this still works, albeit a deprecation message for the MP4 codec. – J.W.F. May 26 '17 at 06:16
15

There have been some changes to libav since the time that this question was originally answered. In an attempt to keep this current and useful I'll provide the followng:

You can accomplish this with recent versions of ffmpeg and avconv by using the transpose video filter.

avconv -i inputfile -vf transpose=clock outputfile

for clockwise rotation.

in ffmpeg the syntax is the same.

ffmpeg -i inputfile -vf transpose=clock outputfile

where inputfile is your supported input video file and outputfile is your desired output file.

For counter clockwise rotation replace clock with cclock

Here's an excerpt from the documentation:

‘cclock_flip’

    Rotate by 90 degrees counterclockwise and vertically flip. (default)
‘clock’

    Rotate by 90 degrees clockwise.
‘cclock’

    Rotate by 90 degrees counterclockwise.
‘clock_flip’

    Rotate by 90 degrees clockwise and vertically flip. 

Sources:

https://libav.org/avconv.html#transpose

https://ffmpeg.org/ffmpeg-filters.html#transpose-1

Testing on Ubuntu 14.04.5 LTS, Ubuntu 16.04, Ubuntu 18.04

Elder Geek
  • 757
  • 8
  • 15
  • 2
    Thanks for the minimal parameters. `ffmpeg` worked for me (didn't try `avconv`) – Amil Waduwawara Sep 15 '19 at 04:02
  • Excellent! yes many posts about `ffmpef` includes a lot of unnecessary arguments, thanks! – Mariano Ruiz Oct 17 '19 at 14:05
  • 1
    @MarianoRuiz I'm glad it helped you. ffmpeg is always in development so over time things change. It's not surprising that easier methods exist than some of the older answers. Cheers! – Elder Geek Oct 17 '19 at 16:07
13

by using VLC, you may rotate the video by going to Tools >> Preferences...

And select "All" for show settings. Then go to: Video >> Filters >> Rotate

After setting the degree you want, you can rotate by going to Tools > Effects and Filters > Video Effects > Geometry .. .

alt text

the one I've tested is mp4 but I believe that VLC can support 3gp too. hope this helps. :)

Gaff
  • 18,569
  • 15
  • 57
  • 68
Ye Lin Aung
  • 5,650
  • 7
  • 32
  • 35
6

Avidemux should be able to do this.

Do Video->Filters->Rotate(x degrees)->Close then File->Save->Save Video

Nifle
  • 34,203
  • 26
  • 108
  • 137
  • Avidemux is my go-to tool for these simple tasks that don't require a lot of customization and artistry. Simple clipping and transforms are very easy. – Craig Jackson Aug 19 '23 at 23:33
4

I don't know exactly what the difference is, but the top answer ffmpeg command takes a very long time to run on my computer in order to rotate a video.

This ffmpeg command on the other hand took only about 7 seconds to rotate a 2gb video file:

ffmpeg -i input-video.mov -metadata:s:v rotate="-90" -codec copy output-video.mov
2

I solved a similar problem — I had a .MOV that was taken upside-down (i.e., rotated 180 degrees) which I wanted to set right.

On my Ubuntu 14.04 system, I ran avconv with essentially the same command-line options as given for ffmpeg in evilsoup's answer.  Apparently, it does not support a transpose option for 180-degree rotation, so I did the 90-degree clockwise (i.e., transpose=1) twice.

When I tried minimal options, I got a message to the effect that:

encoder 'aac' is experimental and might produce bad results.

Add '-strict experimental' if you want to use it.

and the output file was zero length, so I added the -strict experimental.

Command lines that worked were:

avconv -i IMG_orignl.MOV -filter:v 'transpose=1' -strict experimental IMG_interm.MOV
avconv -i IMG_interm.MOV -filter:v 'transpose=1' -strict experimental IMG_result.MOV

The result was satisfactory, with unexplained side-effects:

  1. Intermediate file was smaller than original by ~14%.
  2. Result file was smaller than intermediate by ~18% and smaller than original by almost 30%.
  3. Result file shows thumbnail, while original and intermediate show merely generic icon.

Not that I'm complaining: these are desirable; I just don't understand why they came about...

  • Welcome to Super User.  (1) While some background information in your answer may be helpful, it’s best to focus on your solution to the problem.  I’ve edited your answer to illustrate; feel free to [edit] it further if you believe that I changed too much.  (2) The display order of answers may vary; it’s better to identify other answer(s) explicitly rather than saying “above”.  (2½) I hope you presented your `avconv` command lines in their entirety, and not just the differences from the `ffmpeg` command.  Your answer should be self-sufficient; the other answer might go away.  (3) Good luck! – G-Man Says 'Reinstate Monica' Jun 08 '15 at 04:25
  • Also, I assume that when you say “result was satisfactory” you mean that your “result” file *looked* as good as the original file.  You might want to ([edit] your message to) say so explicitly.  (Such information — i.e., whether you lost video quality visible to the eye — is important to your answer, and shouldn’t be hidden away in a comment.)  Also, I betcha you could leave out the quotes and say just `-filter:v transpose=1 …`. – G-Man Says 'Reinstate Monica' Jun 08 '15 at 04:26