当我将透明度添加到 gif 并将其转换为 webm 时出现故障
Posted
技术标签:
【中文标题】当我将透明度添加到 gif 并将其转换为 webm 时出现故障【英文标题】:Glitchiness when I add transparency to a gif and convert it to webm 【发布时间】:2017-08-30 09:19:41 【问题描述】:从谷歌图片开始,我有这个 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
请参阅以下屏幕截图。它仍然是透明的,但尺寸不再稳定,坦率地说,它开始看起来有点令人毛骨悚然:
我对视频编解码器知之甚少,在其他人的帮助下我才走到这一步。我很感激有关如何更改这些命令以避免故障的建议。
【问题讨论】:
您的问题是您使用 GIF 处理模式 1 您应该强制/使用 2 或 3 而不是看到重复项:How to fix .gif with corrupted alpha channel (stuck pixels) collected with Graphicsmagick? 此处接受的答案中的-dispose background
正是这样做的 :)跨度>
【参考方案1】:
您的问题可能是由于优化后的帧大小不等,因此将 -coalesce 添加到您的命令中,这样就可以了
convert octopus.gif -coalesce -fuzz 25% -transparent "#00AEEF" miff:- | convert -dispose background - octopus-transparent.gif
如果你只是想再次保存为gif,你可以在保存前添加-layer优化。但是如果你想输出到webm,你可能需要避免-layers优化。
另外你没有固定的蓝色,所以你需要-fuzz。
要转换的管道允许设置 dispose 方法。它不会在第一次转换中内联工作,因为它需要在读取输入后立即设置,因此会拾取蓝色背景而不是透明背景。
您的 IM 版本是多少?也许您需要升级。我使用 IM 6.9.8.3 Q16 得到这个:
【讨论】:
以上是关于当我将透明度添加到 gif 并将其转换为 webm 时出现故障的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中将动画 .gif 转换为 .webm 格式?
markdown 将webm文件转换为GIF(使用FFmpeg和Gifsicle)
如何在制作 gif FFMPEG WEBM TO GIF 之前覆盖帧