Animation 当我将透明度添加到gif并将其转换为webm时,会出现问题

Animation 当我将透明度添加到gif并将其转换为webm时,会出现问题,animation,ffmpeg,imagemagick,gif,webm,Animation,Ffmpeg,Imagemagick,Gif,Webm,首先,我从谷歌图片中获得了以下gif: 然后我将蓝色转换为透明度: convert octopus.gif -transparent "#00AEFF" octopus-transparent.gif 现在我有了这个(注意,glitchiness已经开始出现) 现在来看大结局,我将其转换为webm: convert octopus-transparent.gif tmp%03d.png ffmpeg -framerate 25 -f image2 -i ./tmp%03d.png -c:

首先,我从谷歌图片中获得了以下gif:

然后我将蓝色转换为透明度:

convert octopus.gif -transparent "#00AEFF" octopus-transparent.gif
现在我有了这个(注意,glitchiness已经开始出现)

现在来看大结局,我将其转换为webm:

convert octopus-transparent.gif tmp%03d.png

ffmpeg -framerate 25 -f image2 -i ./tmp%03d.png -c:v libvpx -pix_fmt yuva420p octopus.webm
请参见下面的屏幕截图。它仍然透明,但尺寸不再稳定,坦率地说,它开始看起来有点令人毛骨悚然:


我对视频编解码器知之甚少,在别人的帮助下我才走到这一步。对于如何更改这些命令以避免出现故障,我非常感谢您的建议。

您的问题可能是由于优化过程中的帧大小不均,因此请在您的命令中添加-coalesce,以便

convert octopus.gif -coalesce -fuzz 25% -transparent "#00AEEF" miff:- | convert -dispose background - octopus-transparent.gif
如果您只想再次保存为gif,可以在保存前添加图层优化。但是,如果您想要输出到webm,您可能需要避免-layers优化

而且你没有固定的蓝色,所以你需要-绒毛

要转换的管道允许设置dispose方法。它不会在第一次转换时内联工作,因为它需要在读取输入后立即设置,因此将拾取蓝色背景而不是透明背景

你的即时通讯版本是什么?也许你需要升级。我使用IM 6.9.8.3 Q16获得此信息:


您的问题是您使用GIF处理模式1您应该强制/使用2或3,而不是重复:此处接受答案中的
-dispose background
正是这样做的:)