user1321964
user1321964

Reputation: 35

ffmpeg rotate and resize

I'm trying to resize a movie and to rotate it counter-clockwise using ffmpeg. I can achieve one or the other ok individually

ffmpeg -i MVI_8189.MOV -vf "transpose=2" -ss 00:00:12 -t 00:00:05 rotate.MOV

OR

ffmpeg -i MVI_8189.MOV -s 720x406 -ss 00:00:12 -t 00:00:05 resize.MOV

but if I try to do both, either-

ffmpeg -i MVI_8189.MOV -s 720x406 -ss 00:00:12 -t 00:00:05 resize.MOV

ffmpeg -i resize.MOV -vf "transpose=2" toutp.MOV

OR

ffmpeg -i MVI_8189.MOV -vf "transpose=2" -ss 00:00:12 -t 00:00:05 rotate.MOV

ffmpeg -i rotate.MOV -s 406x720 toutp.MOV

the final movie does not play, only audio, no video; neither previewing in Finder, nor in Quicktime. More seriously once I have attempted to play it, I can't then play any other movie whatsoever (only audio) - quicktime won't quit, constantly need to force-quit it. The only way to then restore seems to be reboot OS-X

This though does work -

ffmpeg -i MVI_8189.MOV -vf "transpose=2" -ss 00:00:12 -t 00:00:05 rotate.MOV

ffmpeg -i rotate.MOV -s 720x406 toutp.MOV

but doesn't do what I want - it stretches the movie in the wrong direction

Any ideas?

ffmpeg version 1.0.git Copyright (c) 2000-2012 the FFmpeg developers built on Dec 24 2012 18:43:25 with llvm-gcc 4.2.1 (LLVM build 2336.1.00)

MAC OSX 10.7.5

========== output from

ffmpeg -i MVI_8189.MOV -vf "transpose=2" -ss 00:00:12 -t 00:00:05 rotate.MOV
ffmpeg -i rotate.MOV -s 406x720  toutp.MOV



ffmpeg version 1.0.git Copyright (c) 2000-2012 the FFmpeg developers
  built on Dec 24 2012 18:43:25 with llvm-gcc 4.2.1 (LLVM build 2336.1.00)
  configuration: --prefix=/usr/local --enable-shared --disable-mmx --enable-libmp3lame --enable-gpl --enable-zlib --enable-libvorbis --enable-libfaac --enable-nonfree --enable-libx264 --enable-pthreads
  libavutil      52. 12.100 / 52. 12.100
  libavcodec     54. 81.100 / 54. 81.100
  libavformat    54. 49.102 / 54. 49.102
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 29.101 /  3. 29.101
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Guessed Channel Layout for  Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MVI_8189.MOV':
  Metadata:
    major_brand     : qt  
    minor_version   : 537331968
    compatible_brands: qt  CAEP
    creation_time   : 2014-08-17 23:13:43
  Duration: 00:01:32.40, start: 0.000000, bitrate: 44677 kb/s
    Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuvj420p, 1920x1080, 43132 kb/s, 25 fps, 25 tbr, 25k tbn, 50k tbc
    Metadata:
      creation_time   : 2014-08-17 23:13:43
    Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s
    Metadata:
      creation_time   : 2014-08-17 23:13:43
[libx264 @ 0x7fc67c043600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x7fc67c043600] profile High, level 4.0
[libx264 @ 0x7fc67c043600] 264 - core 128 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mov, to 'rotate.MOV':
  Metadata:
    major_brand     : qt  
    minor_version   : 537331968
    compatible_brands: qt  CAEP
    encoder         : Lavf54.49.102
    Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuvj420p, 1080x1920, q=-1--1, 12800 tbn, 25 tbc
    Metadata:
      creation_time   : 2014-08-17 23:13:43
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, s16, 128 kb/s
    Metadata:
      creation_time   : 2014-08-17 23:13:43
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (pcm_s16le -> libfaac)
Press [q] to stop, [?] for help
frame=  125 fps=5.7 q=-2.0 Lsize=    6394kB time=00:00:05.00 bitrate=10470.5kbits/s    /s    
video:6322kB audio:67kB subtitle:0 global headers:0kB muxing overhead 0.079207%
[libx264 @ 0x7fc67c043600] frame I:1     Avg QP:25.87  size:113032
[libx264 @ 0x7fc67c043600] frame P:65    Avg QP:25.78  size: 64251
[libx264 @ 0x7fc67c043600] frame B:59    Avg QP:26.73  size: 37017
[libx264 @ 0x7fc67c043600] consecutive B-frames:  5.6% 94.4%  0.0%  0.0%
[libx264 @ 0x7fc67c043600] mb I  I16..4: 10.7% 79.9%  9.3%
[libx264 @ 0x7fc67c043600] mb P  I16..4:  3.6% 12.0%  0.3%  P16..4: 52.0% 19.1% 11.3%  0.0%  0.0%    skip: 1.7%
[libx264 @ 0x7fc67c043600] mb B  I16..4:  0.9%  1.7%  0.0%  B16..8: 45.4%  5.1%  0.8%  direct:24.2%  skip:21.9%  L0:50.1% L1:44.5% BI: 5.3%
[libx264 @ 0x7fc67c043600] 8x8 transform intra:74.5% inter:79.5%
[libx264 @ 0x7fc67c043600] coded y,uvDC,uvAC intra: 59.4% 94.3% 79.5% inter: 38.2% 80.5% 30.1%
[libx264 @ 0x7fc67c043600] i16 v,h,dc,p: 30% 21% 22% 28%
[libx264 @ 0x7fc67c043600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 14% 24%  6%  8%  9%  7%  8%  7%
[libx264 @ 0x7fc67c043600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 18% 17%  6%  7%  8%  6%  6%  4%
[libx264 @ 0x7fc67c043600] i8c dc,h,v,p: 60% 14% 18%  8%
[libx264 @ 0x7fc67c043600] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fc67c043600] ref P L0: 43.9% 12.6% 26.8% 16.7%
[libx264 @ 0x7fc67c043600] ref B L0: 68.6% 31.4%
[libx264 @ 0x7fc67c043600] kb/s:10357.28
ffmpeg version 1.0.git Copyright (c) 2000-2012 the FFmpeg developers
  built on Dec 24 2012 18:43:25 with llvm-gcc 4.2.1 (LLVM build 2336.1.00)
  configuration: --prefix=/usr/local --enable-shared --disable-mmx --enable-libmp3lame --enable-gpl --enable-zlib --enable-libvorbis --enable-libfaac --enable-nonfree --enable-libx264 --enable-pthreads
  libavutil      52. 12.100 / 52. 12.100
  libavcodec     54. 81.100 / 54. 81.100
  libavformat    54. 49.102 / 54. 49.102
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 29.101 /  3. 29.101
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'rotate.MOV':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf54.49.102
  Duration: 00:00:05.01, start: 0.010667, bitrate: 10446 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p, 1080x1920, 10358 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
    Metadata:
      handler_name    : DataHandler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 109 kb/s
    Metadata:
      handler_name    : DataHandler
[libx264 @ 0x7fcf1c05ba00] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x7fcf1c05ba00] profile High, level 3.0
[libx264 @ 0x7fcf1c05ba00] 264 - core 128 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mov, to 'toutp.MOV':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf54.49.102
    Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuvj420p, 406x720, q=-1--1, 12800 tbn, 25 tbc
    Metadata:
      handler_name    : DataHandler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, s16, 128 kb/s
    Metadata:
      handler_name    : DataHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (aac -> libfaac)
Press [q] to stop, [?] for help
frame=  125 fps= 32 q=-2.0 Lsize=     469kB time=00:00:05.01 bitrate= 766.2kbits/s    
video:396kB audio:68kB subtitle:0 global headers:0kB muxing overhead 1.088481%
[libx264 @ 0x7fcf1c05ba00] frame I:1     Avg QP:24.20  size: 31395
[libx264 @ 0x7fcf1c05ba00] frame P:42    Avg QP:24.51  size:  7137
[libx264 @ 0x7fcf1c05ba00] frame B:82    Avg QP:27.71  size:   893
[libx264 @ 0x7fcf1c05ba00] consecutive B-frames:  0.8% 16.0% 57.6% 25.6%
[libx264 @ 0x7fcf1c05ba00] mb I  I16..4:  7.0% 62.2% 30.8%
[libx264 @ 0x7fcf1c05ba00] mb P  I16..4:  0.2%  0.8%  0.1%  P16..4: 52.8% 18.7% 12.5%  0.0%  0.0%    skip:14.9%
[libx264 @ 0x7fcf1c05ba00] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 30.0%  0.8%  0.1%  direct: 0.9%  skip:68.2%  L0:36.0% L1:62.1% BI: 2.0%
[libx264 @ 0x7fcf1c05ba00] 8x8 transform intra:66.4% inter:78.3%
[libx264 @ 0x7fcf1c05ba00] coded y,uvDC,uvAC intra: 79.3% 93.6% 84.9% inter: 13.6% 32.2% 10.4%
[libx264 @ 0x7fcf1c05ba00] i16 v,h,dc,p: 50% 19%  7% 24%
[libx264 @ 0x7fcf1c05ba00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 20% 11%  5%  8% 10%  9%  7%  8%
[libx264 @ 0x7fcf1c05ba00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 22%  8%  5%  8%  8% 10%  5%  5%
[libx264 @ 0x7fcf1c05ba00] i8c dc,h,v,p: 42% 22% 24% 13%
[libx264 @ 0x7fcf1c05ba00] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fcf1c05ba00] ref P L0: 48.7% 16.3% 25.6%  9.4%
[libx264 @ 0x7fcf1c05ba00] ref B L0: 73.7% 21.3%  5.0%
[libx264 @ 0x7fcf1c05ba00] ref B L1: 90.7%  9.3%
[libx264 @ 0x7fcf1c05ba00] kb/s:647.04

Upvotes: 0

Views: 4629

Answers (2)

Mtl Dev
Mtl Dev

Reputation: 1622

Simpler version:
ffmpeg -i input.mp4 -vf "transpose=2,scale=720:-2" output.mp4

The above command will:

  • Rotate the video 90 degrees counterclockwise
  • Scale so the (new) horizontal resolution is 720
  • Scale so the new vertical resolution is whatever it needs to be to maintain the aspect ratio of the original file
  • The new vertical will be divisible by 2, which is required by some compression codecs, e.g h265

Upvotes: 4

deadcode
deadcode

Reputation: 2316

I would rotate, and then resize (or vice versa). Let's assume you want the output video to be 1280 pixels wide, and the height to be proportional to the input aspect ratio.

ffmpeg -i movie.mp4 -filter_complex " [0] transpose=dir=2 [rotated] ; [rotated] scale=1280:-2 " fixed_movie.mp4

The -2 argument makes the output height equal to the appropriate aspect ratio, but divisible by 2.

Upvotes: 1

Related Questions