我正在尝试使用调色板来改善 MP4 的 gif 渲染,正如建议的那样。然而,我遇到了一个奇怪的问题:
$ ffmpeg -v warning -i test.mp4 -vf "fps=15,scale=320:-1:flags=lanczos,palettegen" -y /tmp/palette.png
$ ffmpeg -v warning -i /tmp/palette.png -i test.mp4 -lavfi paletteuse -y test.gif
[Parsed_paletteuse_0 @ 0x7f83a8c0eb20] Palette input must contain exactly 256 pixels. Specified input has 480x480=230400 pixels
palettegen
似乎吐出了一个paletteuse
实际上无法使用的调色板。如果文档没有指定这不是预期的行为,那么这就不会那么令人费解了:
保留透明
创建一个最多 255 种颜色的调色板,并保留最后一种颜色用于透明度。保留透明色对 GIF 优化很有用。如果未设置,调色板中的最大颜色数将为 256。您可能希望为独立图像禁用此选项。默认设置。
那么呃。该怎么办?(记录:OsX 10.12,ffmpeg 3.2.4)
答案1
paletteuse 过滤器要求第二个输入是调色板。在当前命令中,由于输入没有明确标记,因此过滤器会按照指定的顺序归纳输入。因此,
ffmpeg -v warning -i test.mp4 -i /tmp/palette.png -lavfi paletteuse -y test.gif