web-dev-qa-db-ja.com

FFMPEGを使用して生成されたGIFサイズを縮小する

私はAndroidを変換するアプリケーションを開発していますmp4ファイルをgifsを使用してffmpegに変換します。問題は、生成されたgifのサイズが非常に大きいことです。もう1つの問題は、生成されたgifを削減するためにffmpeg(eg imagemagick for convert、またはpalletes for now)以外を使用できないことです。サイズ。

これは私が使用しているコマンドです:ffmpeg -y -i file.mp4 -pix_fmt rgb24 -r 10 -s 320x480 file.gif

変換を最適化する他の方法はありますか?

12
arsena

FfmpegをGIFに使用する標準的な方法は次のとおりです。

ビデオからパレットを生成します

ffmpeg -y -i file.mp4 -vf palettegen palette.png

そして、

ffmpeg -y -i file.mp4 -i palette.png -filter_complex paletteuse -r 10 -s 320x480 file.gif

文書化されたその他のオプション ここ

9
Gyan
vid=       
start_time=00:00:01
duration=5       
height=ih/2      # input height halved , can replace with pixils . 
width=-2         # keeps aspect ratio . can replace with pixils . 
fps=25           # frames per a second .

filters="fps=$fps,scale=$width:$height:flags=lanczos"

ffmpeg -ss $start_time                             \
       -t  $duration                               \
       -i  "$vid"                                  \
       -vf "$filters,palettegen"                   \
       -y  palette.png                             &&
ffmpeg -ss $start_time                             \
       -t  $duration                               \
       -i  "$vid"                                  \
       -i  palette.png                                \
       -lavfi "$filters [x]; [x][1:v] paletteuse"  \
       -y  "$vid".gif                              &&
rm palette.png 

ドキュメントへのリンク

詳細

3
FireInTheSky

私はこれらすべてのテクニックを試し、結局 https://ezgif.com を使用しました

私は彼らが内部でどのような魔法を使っているのかわかりませんが、圧縮レベルノブ、パレットの最適化、解像度の削減により、最高の視覚的品質と最小のファイルサイズを実現しました。

私は試した -vf palettegenおよび-filter_complex paletteuse-vf "scale=iw*.2:ih*.2"を同じ実行で実行するため、個別に実行する必要がありました。そして、ffmpegは0.3スケール0.5は奇妙です。 1時間いじった後、私はezgifを試しましたが、うまくいきました。

1
ubershmekel