FFMPEG-裁剪图像,使图像的高度和宽度相等

FFMPEG-裁剪图像,使图像的高度和宽度相等,ffmpeg,Ffmpeg,使用ffmpeg,我希望能够裁剪图像,以便尺寸相等。例如,如果我有一个1600x1000的输入图像,裁剪后它应该是1000x1000(因为1000是两个维度中最小的)。剪切图像时,图像应从两侧平均剪切 一些例子: 输入图像:1600x1000->从左侧裁剪300px,从右侧裁剪300px。最终图像1000x1000 输入图像:1100x1500->从顶部裁剪200px,从底部裁剪300px。最终图像1100x1100 我可以使用下面的命令来裁剪左侧和右侧、底部和顶部或两者。但问题是我只想裁剪最大

使用ffmpeg,我希望能够裁剪图像,以便尺寸相等。例如,如果我有一个1600x1000的输入图像,裁剪后它应该是1000x1000(因为1000是两个维度中最小的)。剪切图像时,图像应从两侧平均剪切

一些例子: 输入图像:1600x1000->从左侧裁剪300px,从右侧裁剪300px。最终图像1000x1000

输入图像:1100x1500->从顶部裁剪200px,从底部裁剪300px。最终图像1100x1100

我可以使用下面的命令来裁剪左侧和右侧、底部和顶部或两者。但问题是我只想裁剪最大的维度。有没有办法知道最大的维度

crop=in_w-in_h/2:in_h-in_w/2

ffmpeg expression evaluation有一个
min
函数,您可以使用它使事情变得非常简单:

crop=min(in_w\,in_h):out_w

允许输出高度引用输出宽度,这样可以避免重复表达式,并且x和y偏移分别默认为
(in_w-out_w)/2
(in_h-out_h)/2
,这样就可以居中(等裁剪)默认情况下,如果不指定任何内容,ffmpeg表达式评估有一个
min
函数,您可以使用该函数使事情变得非常简单:

crop=min(in_w\,in_h):out_w
允许输出高度引用输出宽度,这样可以避免重复表达式,并且x和y偏移分别默认为
(in\u w-out\u w)/2
(in\u h-out\u h)/2
,因此如果不指定任何内容,默认情况下可以居中(等裁剪)