Arthur
Arthur

Reputation: 3473

FFmpeg - Change resolution of the video with aspect ratio

all.

How to change resolution of the video with aspect ratio with FFmpeg?

There are options http://manpages.ubuntu.com/manpages/oneiric/man1/ffmpeg.1.html

       -s size
       Set frame size. The format is wxh (ffserver default = 160x128,
       ffmpeg default = same as source).  The following abbreviations are
       recognized:

and

       -aspect aspect
       Set the video display aspect ratio specified by aspect.

       aspect can be a floating point number string, or a string of the
       form num:den, where num and den are the numerator and denominator
       of the aspect ratio. For example "4:3", "16:9", "1.3333", and
       "1.7777" are valid argument values.

For example, I have two input videos:

I need to make output video with 100*200 resolution.

If I will run ffmpeg with -s 100x200, then second video will have bad aspect ratio.

How can I limit output video by width, with auto aspect ratio by height?

For example, I want specify for the output video only width 100px and ffmpeg must automatically calculate height with right aspect ratio.

For first video it will be:

200/100=2

400/2=200

Ie 100x200

For second video it will be:

400/100=4

700/4=75

Ie 100x75

Is it possible?

Upvotes: 27

Views: 115142

Answers (7)

xamtra
xamtra

Reputation: 31

I improved this code to change aspect ratio without recoding or converting original video. Just follow this:

ffmpeg -i (Movie name).mp4 -c copy -r 15 -aspect 2.21 -strict -2 (output Movie name).mp4

You can change 2.21 to 4:3 or 16:9 depending on your needs.

Upvotes: 3

If you are converting videos in portrait and landscape orientations with different aspect ratios, you can use the force_original_aspect_ratio option:

scale=w=100:h=200:force_original_aspect_ratio=decrease

You can chose to decrease or increase the video size output based on aspect ratio changing the force_original_aspect_ratio value.

Source: https://trac.ffmpeg.org/wiki/Scaling

Upvotes: 0

Matan Dobrushin
Matan Dobrushin

Reputation: 195

Simple command to change the resolution, but keep the original aspect: (Change to 800 width in this example)

ffmpeg -i ogirinal_video.gif -vf scale=800:-1 changed_resolution.gif

Upvotes: 1

Devesh Chauhan
Devesh Chauhan

Reputation: 411

ffmpeg -i <input> -vf scale=720x406,setdar=16:9 <output>

Upvotes: 27

cieunteung
cieunteung

Reputation: 1793

Use magic number -1 to resize video proportionally and setdar need to use slash / as separator not colons :.

ffmpeg -i <input> -vf "scale=100:-1,setdar=16/9" <output>

the command will resize video 200x400 to 100x200 and 400x700 to 100x175 with aspect ratio 16:9

Upvotes: 17

Pankaj Chauhan
Pankaj Chauhan

Reputation: 1715

Below metion both option: with Scale:

ffmpeg -i source.mp4 -r 15 -s 320x240 -strict -2 destination.mp4

With Aspect ratio:

ffmpeg -i source.mp4 -r 15 -aspect 1:1 -strict -2 destination.mp4

Upvotes: 2

Mark Gerolimatos
Mark Gerolimatos

Reputation: 2584

Doesn't work with video. That page only deals with still images.

For reasons not completely understood, FFMPEG monkeys around with the Sample/Pixel Aspect Ratio to turn the video back to the original aspect ratio. For instance, if you stretch the video out twice as wide, it will make the aspect ratio 1:2, or something similar (2:1?)

Thus, if you REALLY want to stretch a video out "Stretch Armstrong" style, you need to force the SAR (Sample Aspect Ratio):

ffmpeg -i <something> -vf scale=iw*55:ih,setsar=1:1 ...

This is not really well described in the FFMPEG manual, here's a video.stackexchange answer that puts it all in one place.

Upvotes: 15

Related Questions