我想要做的是从不同大小的图像创建一个 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"
缩小输出: