Video FFmpeg的过滤器“showpalette”始终返回默认调色板

Video FFmpeg的过滤器“showpalette”始终返回默认调色板,video,ffmpeg,gif,color-palette,Video,Ffmpeg,Gif,Color Palette,我想用FFmpeg提取GIF文件的调色板,并从文档中学习可以做到这一点。但是FFmpeg总是返回相同的默认调色板,而不是自定义调色板 即使对于中的两个示例,FFmpeg也会返回相同的调色板。这是我的密码: ffmpeg -i bbb-trans.gif -vf "showpalette" -y a%03d.png ffmpeg -i bbb-nodither.gif -vf "showpalette" -y b%03d.png 我使用了错误的命令吗?或者它只是FFmpeg的一个bug。正如文档

我想用FFmpeg提取GIF文件的调色板,并从文档中学习可以做到这一点。但是FFmpeg总是返回相同的默认调色板,而不是自定义调色板

即使对于中的两个示例,FFmpeg也会返回相同的调色板。这是我的密码:

ffmpeg -i bbb-trans.gif -vf "showpalette" -y a%03d.png
ffmpeg -i bbb-nodither.gif -vf "showpalette" -y b%03d.png
我使用了错误的命令吗?或者它只是FFmpeg的一个bug。

正如文档中所说,这个过滤器只与pal8像素格式的帧相关。您的测试GIF为完全RGB

你仍然可以跑步

ffmpeg -i in.gif -vf palettegen=stats_mode=single,scale=30*iw:-1:flags=neighbor a%d.png
您仍然可以使用pal8 GIF的showpalette

以下是我的总结-

使用以下命令获取ffmpeg中的默认调色板:

ffmpeg -v fatal -i input.mp4 -vf "showpalette=30" -y palette-default.png
此命令可根据输入文件生成特定调色板:

ffmpeg -v fatal -i input.mp4 -vf "palettegen,scale=30*iw:-1:flags=neighbor" -y palette-specific.png

谢谢我尝试使用您的命令,它返回使用的特定颜色或自定义调色板。并尝试将GIF转换为pal8 ffmpeg-i bbb-nodither.GIF-pix_fmt pal8-y pal8.GIF,这两种输入GIF的默认调色板仍然相同。你知道为什么吗?如果输入的GIF是RGB,那么GIF中没有嵌入调色板,因此没有可显示的自定义调色板。因此,它显示默认调色板。如果您在不运行调色板生成器的情况下转换为pal8,那么它将再次使用默认调色板,这就是将显示的内容。关于我提到的两个GIF文件,在它们上应用xxd,我可以看到其中的调色板,还可以使用ImageMagick convert bbb-Nodether.GIF-格式%c-深度8直方图:信息:-抱歉,我不知道xxd做什么。使用IM,看起来您正在将深度减少到8位,即256种颜色,然后显示最常用的256种颜色。这与我的命令最终所做的相同,使png.xxd只是一个以十六进制转储二进制文件的工具。IM用于确认我通过xxd看到的是一个真正的调色板——顺便说一句,奇怪的是,IM只返回254种颜色,而不是256种。