在保留原始宽高比的同时,将不同尺寸的图像用于gif

时间:2016-08-13 21:24:55

标签: ffmpeg

我正在尝试从一堆不同大小的JPEG图像创建GIF,同时保留每个图像的纵横比。我想要实现的是让我们说我们有一个640x480的矩形,图像应该居中,然后展开以尽可能地填充尺寸。生成的gif应尽可能小,并且所有空白区域应为纯色。

ffmpeg -f image2 -i img_%d.jpg -vf scale=640x480:force_original_aspect_ratio=decrease output.gif

force_original_aspect_ratio = 增加也没有帮助。

实际上我尝试了很多不同的选项,但结果几乎是一样的。选项仅应用于序列的第一个图像,所有其他图像的大小调整为第一个图像的尺寸,而不保留其自身的宽高比。

我只是想知道ffmpeg是可行的还是我应该在gif汇编之前研究自定义图像处理?

1 个答案:

答案 0 :(得分:2)

使用

ffmpeg -i img_%d.jpg -vf scale='if(gt(a,640/480),640,-1)':'if(gt(a,640/480),-1,480)':eval=frame,pad=640:480:(ow-iw)/2:(oh-ih)/2 output.gif

您可能希望使用palettegenpaletteuse过滤器来优化GIF创建。

1

ffmpeg -i img_%d.jpg -vf scale='if(gt(a,640/480),640,-1)':'if(gt(a,640/480),-1,480)':eval=frame,pad=640:480:(ow-iw)/2:(oh-ih)/2,palettegen palette.png

2

ffmpeg -i img_%d.jpg -i palette.png -filter_complex "[0]scale='if(gt(a,640/480),640,-1)':'if(gt(a,640/480),-1,480)':eval=frame,pad=640:480:(ow-iw)/2:(oh-ih)/2[seq];[seq][1]paletteuse" output.gif