【问题标题】:colors messed up (distorted) when making a gif from png files using ffmpeg使用 ffmpeg 从 png 文件制作 gif 时颜色混乱(扭曲)
【发布时间】:2020-03-08 22:54:01
【问题描述】:

我有一系列 png 图片:image_00.pngimage_01.pngimage_02.png 等。我想将它们转换为 gif,所以我尝试了命令

ffmpeg -i image_%02d.png video.gif

不幸的是,生成的 gif 具有扭曲的颜色。更具体地说,它在视频中的一些物体周围添加了一种奇怪的黄色雾霾。

我还尝试将上述命令与所有可能的像素格式选项一起使用(我使用命令ffmpeg -h encoder=gif 确定):rgb8bgr8rgb4_bytebgr4_bytegray、@987654331 @。例如ffmpeg -i image_%02d.png -pix_fmt rgb8 video.gif。不幸的是,所有生成的 gif 都有某种颜色失真。

我还观察到,如果我将图像转换为 mp4 而不是 gif,则不会发生这种失真。但是,如果我尝试将该 mp4 转换为 gif,我最终会再次出现失真。

如何制作这个不失真的 gif?

【问题讨论】:

    标签: ffmpeg png 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
    猜你喜欢
    • 2012-08-02
    • 2011-11-24
    • 2021-01-11
    • 2014-12-25
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多