CGJU
ツール検索サイト
2026年6月18日 · 読了時間 5 分

GIFフォーマットの特徴

GIF(Graphics Interchange Format)は1987年に誕生した画像フォーマットです。古いフォーマットですが、現在でもインターネット上で広く使用されており、特にスタンプや動画デモなどのシーンで活躍しています。GIFフォーマットには独自の利点がありますが、明らかな技術的な制限も存在します。

GIFフォーマットの主な特徴

  • アニメーション対応:複数フレームの画像を含めることができ、アニメーション効果を実現
  • 可逆圧縮:LZW圧縮アルゴリズムを使用し、画質の劣化がない
  • 透明背景:単一フレームの透明色に対応
  • 互換性が高い:ほぼすべてのブラウザとデバイスでサポート
  • 256色制限:1フレームあたり最大256色まで
  • ファイルサイズが大きい:最新の動画フォーマットと比較すると、GIFファイルのサイズは通常大きくなる

GIFの256色制限により、MP4動画を直接GIFに変換すると、色の歪みや画質の低下が発生することがよくあります。高品質なGIFアニメーションを得るには、特別な最適化アルゴリズムを使用する必要があります。

2パスアルゴリズムの原理

FFmpegは効率的なGIF作成ソリューションである2パスアルゴリズム(Two-pass Palette Method)を提供しています。まずパレットを生成し、そのパレットを使用して変換を行うことで、GIFの画質を大幅に向上させます。

第1段階:パレットの生成(palettegen)

第1段階では palettegen フィルタを使用して動画全体の色分布を分析し、最適な256色パレットを生成します。このパレットは特定の動画コンテンツに合わせてカスタマイズされるため、元の動画の色情報を最大限に保持することができます。

ffmpeg -i input.mp4 -vf "palettegen" palette.png

このコマンドは palette.png ファイルを出力します。これがその動画専用に生成された256色パレット画像です。

第2段階:パレットを使用した変換(paletteuse)

第2段階では paletteuse フィルタを使用し、第1段階で生成したパレットと組み合わせて動画をGIFフォーマットに変換します。カスタマイズされたパレットを使用するため、変換後のGIFの色再現性は直接変換よりもはるかに高くなります。

ffmpeg -i input.mp4 -i palette.png -lavfi "paletteuse" output.gif

2パスアルゴリズムの利点

  • より優れた色再現:動画コンテンツに合わせてパレットをカスタマイズするため、色がより正確
  • バンディングの削減:グラデーション領域の色帯や粒状感を効果的に削減
  • より高い画質:直接変換と比較して、画質の向上が明らか
  • 品質の制御が可能:パラメータでパレット品質を調整可能

パレット品質の最適化

palettegenフィルタには、パレットの生成品質を調整するための複数のパラメータが用意されています。動画の内容に応じて適切なパラメータを選択することで、画質とファイルサイズの最適なバランスを得ることができます。

パレット統計方式の調整

stats_mode パラメータを使用して、パレットの統計方式を選択できます:

  • full:すべてのピクセルを統計(デフォルト)。画質は最も良いが速度は最も遅い
  • diff:フレーム間の差分ピクセルのみを統計。動きの少ない動画に適している
  • single:各フレームの個別のピクセルのみを統計
ffmpeg -i input.mp4 -vf "palettegen=stats_mode=diff" palette.png

透明チャンネルの保持

元の動画に透明チャンネルがある場合(WebMフォーマットなど)、透明情報を保持できます:

ffmpeg -i input.webm -vf "palettegen=reserve_transparent=1" palette.png

最高品質モードの使用

paletteuseフィルタは複数のディザリングアルゴリズムをサポートしており、画質をさらに向上させることができます:

ffmpeg -i input.mp4 -i palette.png -lavfi "paletteuse=dither=sierra2_4a" output.gif

よく使われるディザリングアルゴリズム:

  • sierra2_4a:デフォルト値。速度と品質のバランスが良好
  • floyd_steinberg:古典的なFloyd-Steinbergディザリング。品質はより良いが速度はやや遅い
  • bayer:Bayer有序ディザリング。ファイルサイズが小さくなる
  • none:ディザリングを使用しない。色の境界が明確な画像に適している

フレームレート制御

フレームレートはGIFのファイルサイズと滑らかさに影響を与える重要な要素です。動画は通常24fpsまたは30fpsですが、GIFにはそれほど高いフレームレートは必要なく、フレームレートを下げることでファイルサイズを大幅に削減できます。

fpsフィルタによるフレームレート調整

fps フィルタを使用してGIFのフレームレートを正確に制御できます:

ffmpeg -i input.mp4 -vf "fps=15, palettegen" palette.png
ffmpeg -i input.mp4 -i palette.png -lavfi "fps=15, paletteuse" output.gif

よく使われるフレームレートの選択肢:

  • 10-15fps:ほとんどのシーンに適しており、滑らかさとファイルサイズのバランスが良い
  • 8-10fps:文字デモやチュートリアル系の動画に適しており、ファイルサイズが小さくなる
  • 15-24fps:高品質アニメーション、滑らかさを重視する場合
  • 5-8fps:極小アニメーション、最小ファイルサイズを追求する場合

サイズ調整

GIFのサイズはファイルサイズに大きな影響を与えます。GIFのサイズを適切に縮小することは、ファイルサイズを削減する最も効果的な方法の1つです。

scaleフィルタによるサイズ調整

ffmpeg -i input.mp4 -vf "scale=480:-1, palettegen" palette.png
ffmpeg -i input.mp4 -i palette.png -lavfi "scale=480:-1, paletteuse" output.gif

scale フィルタでは、-1 は元のアスペクト比を保持して自動計算することを示します。幅と高さの両方を指定することもできます:

ffmpeg -i input.mp4 -vf "scale=320:240, palettegen" palette.png

一般的なGIFサイズの目安

  • スタンプ:幅200-400ピクセル
  • チュートリアルデモ:幅600-800ピクセル
  • ウェブ表示:幅480-640ピクセル
  • ソーシャルメディア:幅500-700ピクセル

ファイルサイズ削減

フレームレートとサイズ以外にも、GIFファイルのサイズをさらに削減するための多くのテクニックがあります。

動画クリップの切り抜き

動画全体ではなく、必要な部分だけを変換します:

ffmpeg -ss 00:00:05 -t 00:00:10 -i input.mp4 -vf "palettegen" palette.png
ffmpeg -ss 00:00:05 -t 00:00:10 -i input.mp4 -i palette.png -lavfi "paletteuse" output.gif

-ss は開始時間、-t は継続時間を指定します。

色数の削減

色の要件が高くない場合は、パレットの色数を削減できます:

ffmpeg -i input.mp4 -vf "palettegen=max_colors=128" palette.png

総合最適化例

以下は複数の最適化手法を組み合わせた完全な例です:

ffmpeg -ss 2 -t 8 -i input.mp4 -vf "fps=12, scale=480:-1:flags=lanczos, palettegen=stats_mode=diff" palette.png
ffmpeg -ss 2 -t 8 -i input.mp4 -i palette.png -lavfi "fps=12, scale=480:-1:flags=lanczos, paletteuse=dither=bayer" output.gif

実践コマンド

ワンクリック変換スクリプト

使いやすさのために、2パスコマンドをスクリプトにまとめることができます。以下は完全な高品質GIF変換コマンドです:

ffmpeg -i input.mp4 -vf "fps=15, scale=iw*0.5:-1:flags=lanczos, palettegen=stats_mode=full" palette.png -y
ffmpeg -i input.mp4 -i palette.png -lavfi "fps=15, scale=iw*0.5:-1:flags=lanczos, paletteuse=dither=sierra2_4a" output.gif -y

一括変換

LinuxまたはmacOSでは、簡単なシェルスクリプトで一括変換できます:

for file in *.mp4; do
    ffmpeg -i "$file" -vf "fps=12, scale=480:-1, palettegen" palette.png -y
    ffmpeg -i "$file" -i palette.png -lavfi "fps=12, scale=480:-1, paletteuse" "${file%.mp4}.gif" -y
done
rm palette.png

まとめ

MP4→GIF変換は単純に見えますが、高品質で小サイズのGIFアニメーションを得るには、2パスアルゴリズムと複数の最適化テクニックを習得する必要があります。パレット、フレームレート、サイズなどのパラメータを適切に設定することで、画質とファイルサイズの最適なバランスを見つけることができます。

複雑なFFmpegコマンドを覚えたくない場合は、当社の MP4→GIFオンラインツール をご利用ください。ブラウザで動画をアップロードし、簡単なパラメータ設定で高品質なGIFアニメーションを作成できます。

関連記事

その他の役立つ記事とツール

GIFをすぐに変換したいですか?

当社の無料MP4→GIFオンラインツールをご利用ください。ソフトウェアのインストール不要で、ブラウザで高品質なGIFアニメーションを作成できます

今すぐ体験 ➡