开始我从谷歌图片获得这个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
请参阅以下屏幕截图。它仍然是透明的,但尺寸不再稳定,坦率地说,它开始看起来有点令人毛骨悚然:
我对视频编解码器并不是很了解,而且我刚刚得到了其他人的帮助。我很欣赏有关如何更改这些命令以避免故障的建议。
答案 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获得了这个: