我正在尝试从一堆不同尺寸的 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 组装之前研究自定义图像操作吗?
最佳答案
使用
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 创建的过滤器。
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
关于FFmpeg 将不同大小的图像转换为 gif,同时保留原始纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38937136/