FFmpeg 将不同大小的图像转换为 gif,同时保留原始纵横比

标签 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 组装之前研究自定义图像操作吗?

最佳答案

使用

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

关于FFmpeg 将不同大小的图像转换为 gif,同时保留原始纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38937136/

相关文章:

video - 使用 ffmpeg 将 divx/mkv 流式传输到 html5 视频

image - 使用 go 图像库从标准输出解码 bmp 图像

linux - OpenCV Cmake 无法找到 ffmpeg 库

ios 播放 HLS - 只有最低比特率可用

java - 初始化复杂过滤器时出错。从 Kotlin 运行 ffmpeg 时出现无效参数错误

C# 获取图像中的主色

ffmpeg - 创建一个 Discord Bot 来播放 .mp3 文件

bash - 如何在 ffmpeg 中创建随机通行证名称?

python-3.x - 如何让 discord bot 队列本地 mp3?

ffmpeg - 使用 Red5 和 H.265 原始即将到来的视频进行实时流式传输