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

时间:2017-04-04 23:58:07

标签: animation ffmpeg imagemagick gif webm

开始我从谷歌图片获得这个gif:

enter image description here

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

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

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

enter image description here

现在为大结局,我将其转换为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

请参阅以下屏幕截图。它仍然是透明的,但尺寸不再稳定,坦率地说,它开始看起来有点令人毛骨悚然:

enter image description here

我对视频编解码器并不是很了解,而且我刚刚得到了其他人的帮助。我很欣赏有关如何更改这些命令以避免故障的建议。

1 个答案:

答案 0 :(得分:2)

您的问题可能是由于优化时帧大小不一致所以添加-coalesce到您的命令,因此

convert octopus.gif -coalesce -fuzz 25% -transparent "#00AEEF" miff:- | convert -dispose background - octopus-transparent.gif

如果您只想再次保存为gif,可以在保存之前添加-layer optimize。但是如果你想输出到webm,你可能需要避免-layers optimize。

你也没有恒定的蓝色,所以你需要-fuzz。

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

你的IM版本是什么?也许你需要升级。我使用IM 6.9.8.3 Q16获得了这个:

enter image description here