フレームレート: 大きいほど滑らかですがファイルも大きくなります
最大幅: アスペクト比を保ったまま自動的にスケールされます
パレット色数: 色数が少ないほどファイルは小さくなりますが、多少の品質低下があります
アニメーション GIF 変換:選択したフレームレートでフレームを抽出し、最大幅へスケールして、ループ用に最適化されたカラーパレットを構築します。音声トラック(あれば)は破棄されます。
GIF はなぜこんなに大きい?パレット、ディザリング、動画役を担わされた 1987 年の形式
GIF(Graphics Interchange Format、1987 年)は小さなアニメーションのおまけ付きの静止画形式として設計され、その痕が至る所に表れています。このページのすべてを支配する 2 つの性質:各フレームは保存されたパレットから選んだ 256 色に制限されること、そしてフレームが LZW — zip 時代の汎用バイト圧縮器 — で圧縮されること。LZW は動画が格納されていることを知りません。動き補償もなく、「このフレームはほぼ前のフレームと同じ」という本物の動画コーデックの算術もなく、各フレームは本質的に個別に圧縮された 1 枚の画像です。小さくて見栄えの良い GIF を得る鍵は、パレットを理解することです。
このページの残りの前提となる 5 つの事実:
• 各フレームはパレットから最大 256 色(28)まで。トゥルーカラーの動画は量子化して落とすしかない
• ディザリングは近傍のパレット色の点を散らして欠けた色を偽装する — ファイルは大きくなり、グラデーションは滑らかに
• フレームタイミングは 10ms 単位で保存:10 fps → ディレイ 10(100ms)。実用上の下限はディレイ 2(20ms = 50 fps)
• フレームは独立に LZW 圧縮される — フレーム間圧縮がないことが最大のサイズ要因
• 色数を減らし、フレームを減らし、寸法を小さく:どのつまみも LZW への入力を縮め、効果は掛け合わせになる
256 色パレットとバンディング
トゥルーカラーの動画ピクセルは 24 ビット必要です(1,677 万通り)。GIF のピクセルは最大 256 色の表への 8 ビットの索引です。したがって動画の GIF 変換はパレット量子化を行います:内容を最もよく代表する 256 色を選び、全ピクセルを最も近い色へスナップさせる。グラデーションがその代償を払います — 4,000 通りのわずかに異なる青が必要な空は 30 色しか得られず、滑らかな階調は バンディングと呼ばれる目に見える縞模様へ崩壊します。コントラストの高い平坦なグラフィック(ロゴ、ゲームスプライト、チャート)はほとんど影響を受けず、写真と動画が最も打撃を受けます。コンバーターのパレット品質は出力品質の大きな部分を占めます。
ディザリング:ノイズと引き換えにした滑らかさ
ディザリングはバンディングへの古典的な解決策です:各ピクセルを最も近いパレット色へスナップさせる代わりに、最も近い 2 色の混合を散らし、小さな領域の平均が元の階調に一致するようにします。グラデーションは劇的に滑らかになり — 縞は普通の視聴距離で目が混ぜ合わせる細かいノイズへ溶けます。代償はファイルサイズ:ノイズは高周波のディテールで、LZW は散らされた点より規則的な縞をずっとよく圧縮します。これがこのページが露出する GIF の根本的なトレードオフです:ディザリングを切ればバンディングと引き換えに小さく、つければ滑らかなグラデーションと引き換えに大きく。
フレームタイミング:20ms の下限
GIF はフレーム間のディレイを 1/100 秒単位で保存します。10 fps はディレイ 10(フレームあたり 100ms)、20 fps はディレイ 5(50ms)。有用な最小値は 2(20ms、つまり 50 fps)で、実際にはほとんどのブラウザーはそれ未満を 100ms にクランプします — 60 fps を要求すると黙って遅い再生になります。下限を超えれば、fps を上げるごとにフレーム数が掛け算されます:同じクリップで 15 fps → 50 fps は 3 倍以上のフレームで、GIF のサイズはほぼフレーム数に比例します。10 秒のクリップは 15 fps で 150 フレーム、50 fps では 500 フレームになります。
本物の動画と比べて GIF が膨らむ理由
現代の動画コーデックはビットの大部分をフレーム間の変化の記述に費やします — 固定カメラなら後続のフレームはほぼタダです。GIF の LZW は毎フレームを新しい画像として扱います(フレーム間の唯一のトリックは、前のフレームと同一のピクセルをスキップする透過フラグで、本物の動き補償には遠く及びません)。経験則:同じクリップなら、GIF は同じ解像度のきちんとエンコードされた WebM の何倍にもなると期待してください。行き先が本物の動画を受け入れるならそちらを優先してください。GIF が勝るのは、その普遍性と自動再生/ループ動作が重要な場面だけです。
よくある誤解
- 「GIF は圧縮されているから動画に効率的だ」LZW は動きのモデルを持たない 1987 年のバイトレベル圧縮器です。動く映像については、Web で広く使われる形式の中で最も非効率です。
- 「ソースが 60 fps だから GIF も 60 fps であるべきだ」20ms のディレイ下限が GIF を 50 fps に制限し、ブラウザーは下限未満のディレイを切り上げます。フレーム単位の忠実度は GIF が提供できるものではありません。
- 「ディザリングは切るべきただのノイズだ」意図的な品質/サイズのトレードです。オフなら小さなファイルとバンディング、オンなら滑らかなグラデーションとバイトのコスト。
- 「色数を減らすと必ずひどく見える」平坦なグラフィックと高コントラストのアニメーションでは、64 色でも 256 色と同じに見えることがあり — さらにファイルを縮められます。
関連ツール:本物の圧縮付きトゥルーカラーアニメーションは動画 → WebP/APNG、逆方向(パレット → トゥルーカラー)はGIF → 動画、同じクリップを本物の動画として動画 → WebM、変換前のソースのトリミングは動画カッター。