0

ffmpeg缩放视频尺寸

 3 years ago
source link: https://blog.p2hp.com/archives/5515
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

FFmpeg有一个非常强大的缩放过滤器,可用于完成各种任务。其中一些列在这里。更多信息可以在官方文档中找到。

在所有示例中,起始图像(input.jpg)将是这一个(535⨉346像素):

简单重新缩放

如果您只需将视频大小调整为特定大小(例如320⨉240),则可以使用最基本形式的缩放滤镜:

ffmpeg -i input.avi -vf scale = 320:240 output.avi

同样适用于图像:

ffmpeg -i input.jpg -vf scale = 320:240 output_320x240.png

生成的图像如下所示:

如您所见,纵横比与原始图像不同,因此图像显示为拉伸。

保持宽高比

如果我们想保持纵横比,我们只需要指定一个组件(宽度或高度),并将另一个组件设置为-1。例如,这个命令行:

ffmpeg -i input.jpg -vf scale = 320:-1 output_320.png

将输出图像的宽度设置为320像素,并根据输入图像的宽高比计算输出图像的高度。生成的图像的尺寸为320×207像素。

一些编解码器要求宽度和高度的大小为n的倍数。您可以通过将宽度或高度设置为-n来实现此目的:

ffmpeg -i input.jpg -vf scale = 320:-2 output_320.png

输出现在为320⨉206像素。

还有一些有用的变量可用于代替数字,以指定输出图像的宽度和高度。

例如,如果要以这样的方式拉伸图像以仅使输入图像的宽度加倍,则可以使用类似这样的内容(iw =输入宽度,ih =输入高度):

ffmpeg -i input.jpg -vf scale = iw * 2:ih input_double_width.png

输出图像如下所示:

如果你想要图片大小的一半,只需乘以.5或除以2:

ffmpeg -i input.jpg -vf“scale = iw * .5:ih * .5”input_half_size.png
ffmpeg -i input.jpg -vf“scale = iw / 2:ih / 2”input_half_size.png

有时您想要缩放图像,但如果尺寸太小,请避免放大图像。这可以使用min表达式完成:

ffmpeg -i input.jpg -vf“scale ='min(320,iw)':'min(240,ih)'”input_not_upscaled.png

输出宽度将被评估为320的最小值和输入宽度。如果您的输入图像宽度仅为240像素,则min函数的结果将为240 - 这将是您的目标值。

适合矩形/静态大小的播放器

有时您需要缩放输入图像以使其适合指定的矩形,例如在合并来自不同来源的材料时。

您可以使用force_original_aspect_ratio选项实现此目的。它有两个可能的值:

  • 减少:如果需要,输出视频尺寸将自动减小。
  • 增加:如果需要,输出视频尺寸将自动增加。

这允许您强制图像适合320x240框,使用正确的宽高比缩小它:

ffmpeg -i input.jpg -vf scale = w = 320:h = 240:force_original_aspect_ratio =减少output_320.png

这产生了我们之前看到的320x207图像。

您可能有其他约束,例如添加黑条(柱状和letterboxing)以在缩放到某个矩形时填充剩余空间。您还可以使用pad过滤器添加黑色边框:

ffmpeg -i input.jpg -vf“scale = 320:240:force_original_aspect_ratio = decrease,pad = 320:240:(ow-iw)/ 2:(oh-ih)/ 2”output_320_padding.png

更多的例子可以发现在这个超级用户答案

指定缩放算法

您可以使用-sws_flags选项指定用于调整大小的算法。例如,要使用双线性而不是默认的双三次缩放:

ffmpeg -i test.tif -vf scale = 504:376 -sws_flags bilinear out.bmp

有关详细信息,请参阅缩放器文档。要设置多个标志,您可以将它们与+号组合。例如:

-sws_flags lanczos + full_chroma_inp

您还可以直接在比例过滤器中指定选项,例如:

-vf scale = 1920x1080:flags = lanczos



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK