私は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
変換を最適化する他の方法はありますか?
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
文書化されたその他のオプション ここ 。
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
私はこれらすべてのテクニックを試し、結局 https://ezgif.com を使用しました
私は彼らが内部でどのような魔法を使っているのかわかりませんが、圧縮レベルノブ、パレットの最適化、解像度の削減により、最高の視覚的品質と最小のファイルサイズを実現しました。
私は試した -vf palettegen
および-filter_complex paletteuse
が-vf "scale=iw*.2:ih*.2"
を同じ実行で実行するため、個別に実行する必要がありました。そして、ffmpegは0.3
スケール0.5
は奇妙です。 1時間いじった後、私はezgifを試しましたが、うまくいきました。