我正在尝试从一堆不同大小的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汇编之前研究自定义图像处理?
答案 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
您可能希望使用palettegen和paletteuse过滤器来优化GIF创建。
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
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