動画ファイルから高品質かつ軽量なアニメーションGIFを生成・最適化するためのターミナルコマンドリファレンス。
モダンな FFmpeg によるワンライナー変換(推奨)
2パスパレット生成フィルタを用いて、高画質かつ高圧縮なGIFを1行のコマンドで出力:
ffmpeg -ss 00:00:02 -to 00:00:08 -i input.mp4 \
-vf "fps=15,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
-loop 0 output.gif
クラシックな ImageMagick & Gifsicle パイプライン
mplayer と gifsicle を使った MP4 からの変換
mkdir -p gif
mplayer -ao null -vo gif89a:outdir=gif "$INPUT"
mogrify -format gif *.png
gifsicle --colors=256 --delay=4 --loopcount=0 --dither -O3 gif/*.gif > "${INPUT%.*}.gif"
rm -rf gif
mplayer、imagemagick、gifsicle を使用。動画からフレーム画像を連番抽出し、最適化GIFへと結合します。
時間範囲の切り出し(トリミング)
タイムスタンプを指定して動画の特定区間のみを抽出:
mplayer -ao null -ss 0:02:06 -endpos 0:00:15 -vo gif89a:outdir=gif videofile.mp4
-ss [time]: 開始位置のタイムスタンプ。-endpos [duration]: 切り出す区間の継続時間。
Gifsicle による容量削減と最適化
不可逆圧縮と色数削減によりGIFファイルサイズを劇的に軽量化:
# 色数を128色に削減し最高圧縮を適用
gifsicle -O3 --colors 128 input.gif -o output.gif
# 不可逆圧縮(ファイルサイズを大幅に削減)
gifsicle -O3 --lossy=80 input.gif -o output.gif