FFmpeg - 使用宽高比更改视频的分辨率

Art*_*hur 11 video ffmpeg resolution aspect-ratio

所有.

如何用FFmpeg改变宽高比视频的分辨率?

有选项 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:
Run Code Online (Sandbox Code Playgroud)

       -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.
Run Code Online (Sandbox Code Playgroud)

例如,我有两个输入视频:

  • 分辨率为200*400
  • 分辨率为400*700

我需要制作100*200分辨率的输出视频.

如果我将使用-s 100x200运行ffmpeg,则第二个视频的宽高比会很差.

如何按宽度限制输出视频,自动宽高比按高度?

例如,我想为输出视频指定宽度仅为100px,而ffmpeg必须自动计算具有正确宽高比的高度.

对于第一个视频,它将是:

100分之200= 2

2分之400= 200

即100x200

对于第二个视频,它将是:

100分之400= 4

4分之700= 75

即100x75

可能吗?

Dev*_*han 15

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

了解更多信息,

更改分辨率的视频,使用-的ffmpeg

  • 对我来说,我必须使用 `-vf scale=854x480,setdar=16/9`。'/' 而不是 ':' (4认同)

Mar*_*tos 8

不适用于视频.该页面仅处理静止图像.

由于未完全理解的原因,FFMPEG使用样本/像素宽高比来调整视频以恢复原始宽高比.例如,如果您将视频拉出两倍宽,它会使宽高比为1:2,或类似的东西(2:1?)

因此,如果您真的想要将视频拉伸为"Stretch Armstrong"样式,则需要强制SAR(样本纵横比):

ffmpeg -i <something> -vf scale=iw*55:ih,setsar=1:1 ...
Run Code Online (Sandbox Code Playgroud)

这在FFMPEG手册中没有得到很好的描述,这里是一个video.stackexchange答案,它将所有内容放在一个地方.


cie*_*ung 7

使用幻数-1按比例调整视频大小,setdar需要使用斜线/作为分隔符而不是冒号:

ffmpeg -i <input> -vf "scale=100:-1,setdar=16/9" <output>
Run Code Online (Sandbox Code Playgroud)

该命令将调整视频200x400100x200400x700100x175纵横比16:9

  • @TheLebDev -2 将确保维度是 2 的倍数。类似地 -3 将生成 3 的倍数的维度,依此类推。https://trac.ffmpeg.org/wiki/Scaling#KeepingtheAspectRatio (2认同)