在 Imagemagick 中创建的透明 PNG 在 FFMPEG 中绘制为不透明

Transparent PNG created in Imagemagick drawn as opaque in FFMPEG

我正在尝试使用 ImageMagick 编写视频创建脚本,以创建一些叠加层,然后将其放置在视频之上。

如果我尝试直接使用 ImageMagick 创建的图像,透明度将被绘制为不透明。

我使用 ImageMagick 绘图命令创建了一个透明的 PNG。当加载到 GIMP 中并进行检查时,PNG 有一个 alpha 通道并且每个透明像素似乎都具有透明度:RGBA = 0,0,0,0

此图像在 ffmpeg 中用作叠加层时,在视频中只有不透明的黑色背景。

如果我再次从 GIMP 导出图像,那么文件看起来是一样的,但在视频中只是显示为纯蓝色(叠加图像中绘图的颜色)。

我可以解决这个问题,方法是获取叠加图像,将其加载到 GIMP 中,然后全选并从剪贴板创建一个新图像并导出(使用与我之前重新导出时完全相同的设置,而无需创建新文件),然后它将完全按照需要工作,显示叠加层的非透明部分而不显示透明部分。

关键问题:

我如何编写在 GIMP 中创建新文件时以某种方式发生的转换,或者(更好)首先不让它出错?

这是两个文件:

损坏: 作品: 有什么区别?

我建议您在将 ImageMagick 与 PNG32: 一起使用时为输出文件名添加前缀,以强制它生成 32 位 ber 像素图像 - 即 R、G、B 和 Alpha 各 1 个字节,并希望 ffmpeg 对此更满意。

convert input.png -draw ... PNG32:output.png

如果您 运行 identify -verbose(也在 ImageMagick 套件中)处理损坏的图像和工作图像,您会发现主要区别在于工作图像具有 color-type=6bit-depth=8 而损坏的图像有 color-type=3 (indexed)bit-depth=4