アニメーションGIFのサイズを透明に変更しようとしましたが、背景が真っ白になりました。透明度を維持するにはどうすればよいですか?
https://superuser.com/a/556031/130929 を読んで、試しました
>set FILTERS=scale=320:-1:flags=lanczos
>ffmpeg -hide_banner -i logo.gif -vf "%FILTERS%,palettegen=stats_mode=diff" -y palette.png
>ffmpeg -hide_banner -i logo.gif -i palette.png -lavfi "%FILTERS% [x]; [x][1:v] paletteuse" logo-320.gif
私も-gifflags +transdiff
を試しましたが、回答のブログ投稿にそれがとにかくデフォルトであると書かれているため、役に立ちませんでした。 stats_mode=diff
なしでも試してみました。
フレームごとにパレットを試してみましたが、ファイルが大きくなるだけで、透明度が保たれませんでした。
>ffmpeg -hide_banner -i logo.gif -filter_complex "[0:v] scale=320:-1:flags=lanczos,split [a][b]; [a] palettegen=stats_mode=single [p]; [b][p] paletteuse=new=1" logo-320.gif
3.4.1から4.0.2にアップグレードしましたが、機能しました。しかし、私はより良い結果を得ました
>ffmpeg -hide_banner -v warning -i logo.gif -filter_complex "[0:v] scale=320:-1:flags=lanczos,split [a][b]; [a] palettegen=reserve_transparent=on:transparency_color=ffffff [p]; [b][p] paletteuse" logo-320.gif
palettegen=reserve_transparent=on:transparency_color=ffffff
を追加して、エッジ周辺の白い線のアーティファクトを回避します。