当我将透明度添加到 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)

将 PNG 转换为具有透明度的 webm 视频

如何在制作 gif FFMPEG WEBM TO GIF 之前覆盖帧

sh 将GIF简单地转换为MP4(h264 / h265),WebM(vp8 / vp9)和WebP

Ffmpeg - 从 webm 格式创建缩略图并将 webm 电影转换为 flv 电影