当我将透明度添加到 gif 并将其转换为 webm 时出现故障

Glitchiness when I add transparency to a gif and convert it to webm

开始时,我从 google 图片中获得了这张 gif:

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

convert octopus.gif -transparent "#00AEFF" octopus-transparent.gif

现在我有了这个(注意故障已经开始出现)

现在是压轴戏,我将其转换为 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,你可以在保存前添加-layer optimize。但是如果你想输出到 webm,你可能需要避免 -layers 优化。

另外你没有固定的蓝色,所以你需要-fuzz。

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

您的 IM 版本是多少?也许你需要升级。我使用 IM 6.9.8.3 Q16: