2017-03-18 5 views
0

FFmpegでGIFファイルのパレットを抽出し、filter "showpalette"がそれを行うことができる文書から学びました。しかし、FFmpegは常にカスタムパレットの代わりに同じデフォルトパレットを返します。FFmpegの "showpalette"フィルタは常にデフォルトのパレットを返します

default palette

のFFmpegもpkh.me's Post内の2つの例については同じパレットを返します。ここに私のコード:

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です。あなたはまだ

+0

ありがとうございます!私はあなたのコマンドを試して、それは特定の色やカスタムパレットを返します。また、GIFをpal8 'ffmpeg -i bbb-nodither.gif -pix_fmt pal8 -y pal8.gif'に変換しようとしましたが、それでも両方の入力GIFのデフォルトパレットは同じです。なぜなのかご存知ですか? – Vej

+0

入力GIFがRGBの場合、GIFにパレットは埋め込まれていないため、表示するカスタムパレットはありません。したがって、デフォルトのパレットが表示されます。パレットジェネレータを実行せずにpal8に変換すると、再びデフォルトのパレットが使用されるので、これが表示されます。 – Mulvya

+0

私が言及した2つのGIFファイルについて、それらに 'xxd'を適用し、パレットを内部に見ることができ、ImageMagickで結果を得ました。 "convert bbb-nodither.gif -format%c -depth 8 histogram:info: " – Vej

0

あなたはまだpal8のGIFのためshowpaletteを使用することができます

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

を実行することができます

は、ここに私の要約です -

ffmpegのデフォルトのパレットを取得するには、次のコマンドを使用します

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

このコマンドは、thに基づいて特定のパレットを生成できますe入力ファイル:

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