2017-03-18 35 views
0

我想用FFmpeg提取GIF文件的調色板,並從filter "showpalette"可以做到這一點的文檔中學習。但FFmpeg總是返回相同的默認調色板而不是自定義調色板。FFmpeg過濾器「showpalette」總是返回默認調色板

default palette

FFmpeg的返回相同的調色板即使對於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的一個缺陷。

回答

1

正如文檔showpalette所述,「此過濾器僅與pal8像素格式幀相關」。您的測試GIF是完整的RGB。

,您仍然可以運行

ffmpeg -i in.gif -vf palettegen=stats_mode=single,scale=30*iw:-1:flags=neighbor a%d.png 

您仍然可以使用showpalette爲pal8的GIF

+0

謝謝!我試着用你的命令,它返回使用的特定顏色或自定義調色板。並且還嘗試將GIF轉換爲pal8'ffmpeg -i bbb-nodither.gif -pix_fmt pal8 -y pal8.gif',這兩個輸入GIF仍然是相同的默認調色板。你知道爲什麼嗎? – Vej

+0

如果輸入的GIF是RGB,那麼GIF中沒有嵌入調色板,所以沒有自定義調色板可以顯示。因此它顯示了默認的調色板。如果你轉換爲pal8而不運行調色板生成器,它將再次使用默認調色板,所以這將顯示。 – Mulvya

+0

關於我提到的兩個GIF文件,在它們上應用''xxd',我可以看到裏面的調色板,也用ImageMagick得到了結果「convert bbb-nodither.gif -format%c -depth 8 histogram:info: - | 「 – Vej

0

這裏是我的總結 -

使用以下命令來獲得的ffmpeg默認調色板:

ffmpeg -v fatal -i input.mp4 -vf "showpalette=30" -y palette-default.png 

該命令可以基於第e輸入文件:

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