当我将透明度添加到 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:
开始时,我从 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: