FFmpeg - Change resolution of the video with aspec

2020-05-23 08:48发布

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:

  • with 200*400 resolution
  • with 400*700 resolution

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?

4条回答
Luminary・发光体
2楼-- · 2020-05-23 09:11

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

Learn more about it,

Changing-resolution-video-using-ffmpeg

查看更多
做自己的国王
3楼-- · 2020-05-23 09:23

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.

查看更多
We Are One
4楼-- · 2020-05-23 09:26

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

查看更多
霸刀☆藐视天下
5楼-- · 2020-05-23 09:31

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
查看更多
登录 后发表回答