FFmpeg 的过滤器 "showpalette" 总是 returns 默认调色板

Filter "showpalette" of FFmpeg always returns the default palette

我想用 FFmpeg 提取 GIF 文件的调色板,并从文档中了解到 filter "showpalette" 可以做到这一点。但是 FFmpeg 总是 returns 相同的默认调色板而不是自定义调色板。

FFmpeg returns 即使 pkh.me's Post 中的两个示例也是相同的调色板。这是我的代码:

ffmpeg -i bbb-trans.gif -vf "showpalette" -y a%03d.png
ffmpeg -i bbb-nodither.gif -vf "showpalette" -y b%03d.png

我是不是用错命令了?或者它只是 FFmpeg 的一个错误。

正如 showpalette 的文档所说,“此过滤器仅与 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