使用 ffmpeg 从 png 文件制作 gif 时颜色混乱(扭曲)
Posted
技术标签:
【中文标题】使用 ffmpeg 从 png 文件制作 gif 时颜色混乱(扭曲)【英文标题】:colors messed up (distorted) when making a gif from png files using ffmpeg 【发布时间】:2020-03-08 22:54:01 【问题描述】:我有一系列 png 图片:image_00.png
、image_01.png
、image_02.png
等。我想将它们转换为 gif,所以我尝试了命令
ffmpeg -i image_%02d.png video.gif
不幸的是,生成的 gif 具有扭曲的颜色。更具体地说,它在视频中的一些物体周围添加了一种奇怪的黄色雾霾。
我还尝试将上述命令与所有可能的像素格式选项一起使用(我使用命令ffmpeg -h encoder=gif
确定):rgb8
、bgr8
、rgb4_byte
、bgr4_byte
、gray
、@987654331 @。例如ffmpeg -i image_%02d.png -pix_fmt rgb8 video.gif
。不幸的是,所有生成的 gif 都有某种颜色失真。
我还观察到,如果我将图像转换为 mp4 而不是 gif,则不会发生这种失真。但是,如果我尝试将该 mp4 转换为 gif,我最终会再次出现失真。
如何制作这个不失真的 gif?
【问题讨论】:
【参考方案1】:我能够通过首先为所有 png 图像生成一个调色板来解决这个问题。然后我使用该调色板创建了 gif:
ffmpeg -i image_%02d.png -vf palettegen palette.png
ffmpeg -i image_%02d.png -i palette.png -lavfi paletteuse video.gif
有关详细信息,请参阅https://ffmpeg.org/ffmpeg-filters.html 的“palettegen”和“paletteuse”部分
【讨论】:
这会在 git-2020-02-09-5ad1c1a 版本中产生“线程消息队列阻塞”错误消息,相当混乱。曾经工作过,现在怀疑我的框架太大了。 @ConradB 是的,我有时也会收到这条消息。我不认为它会影响输出。但是您通常可以通过使用-thread_queue_size
选项手动设置线程队列大小来修复它,例如ffmpeg -thread_queue_size 1024 -i image_%02d.png -i palette.png -lavfi paletteuse video.gif
。以上是关于使用 ffmpeg 从 png 文件制作 gif 时颜色混乱(扭曲)的主要内容,如果未能解决你的问题,请参考以下文章
如何在制作 gif FFMPEG WEBM TO GIF 之前覆盖帧