ffmpeg 从图像序列创建 GIF 并使用透明背景

ffmpeg 从图像序列创建 GIF 并使用透明背景

我想要做的是从不同大小的图像创建一个 gif,并使具有不同纵横比的图像的边框(填充区域)透明。

每幅图像应显示 3 秒。(-r 1/3)

我从我想要的图像创建了一个文件列表 (Lista.txt),图像名称没有按顺序排列,所以我不能使用 %03d 之类的东西。所有文件都是 *.jpg 格式。

我的代码:

ffmpeg -f concat -safe 0 -r 1/3 -i Lista.txt -loop 0 -lavfi ^
"[0]format=rgba,scale=854:480:force_original_aspect_ratio=decrease:eval=frame,pad=854:480:-1:-1:eval=frame:color=#[email protected][vid]; ^
[vid]split[vid1][vid2];[vid1]palettegen=reserve_transparent=1[pal]; ^
[vid2][pal]paletteuse=alpha_threshold=128[final]" -map [final] -gifflags -offsetting "output.gif"

最终结果 output.gif 仅显示序列的最后一张图像,而不是所有图像。如能提供任何帮助,我将不胜感激。

这些是图片: 图片.zip

结果如下: 输出.gif

答案1

看起来添加-reinit_filter 0标志可以解决问题:

ffmpeg -f concat -safe 0 -reinit_filter 0 -r 1/3 -i Lista.txt -loop 0 -lavfi ^
"[0]format=rgba,scale=854:480:force_original_aspect_ratio=decrease:eval=frame,pad=854:480:-1:-1:eval=frame:color=#[email protected][vid]; ^
[vid]split[vid1][vid2];[vid1]palettegen=reserve_transparent=1[pal]; ^
[vid2][pal]paletteuse=alpha_threshold=128[final]" -map [final] -gifflags -offsetting "output.gif"

缩小输出:

在此处输入图片描述

相关内容