記事

GIFをMP4に変換するとファイルサイズが90%減る理由と正しい変換方法

5秒のアニメーションGIFが10MB、MP4に変換すれば1MB未満に。GIFが重くなる技術的理由をフレーム間圧縮と256色パレットの観点から解説し、X(Twitter)が内部でMP4に変換する仕組み、フレームごとの遅延タイミングを保ったまま正しく変換する手順を紹介します。

GIFをMP4に変換するとファイルサイズが90%減る理由と正しい変換方法

5秒のアニメーションGIFは平気で8〜15MBになります。同じアニメーションをMP4にすると1MB以下

これは誤差ではなく約10倍の差です。X(旧Twitter)やInstagramがGIFをアップロードした瞬間に内部でMP4動画に変換しているのは、まさにこの理由です。

この記事では、なぜGIFはここまで重いのか、いつMP4に変換すべきか、そして多くの変換ツールが見落としている重要なポイントを解説します。


1. GIFが巨大になる仕組み

GIFの圧縮仕様は1989年に策定されたまま、一度も更新されていません。そこから2つの本質的な問題が生じます。

フレーム間圧縮がない。 現代の動画コーデック(H.264など)は前のフレームとの「差分」だけを保存します。画面の90%が変わらなければ、その90%はほぼゼロコスト。GIFにはこの概念がなく、毎フレームがほぼ独立した画像として格納されます。

1フレーム256色の制限。 写真的なシーンを256色で表現するにはディザリング(色をばらまいて中間色を擬似的に再現する手法)が必須です。しかしディザリングが生む細かいノイズは圧縮効率を著しく下げます。色数制限を補う処理が、容量問題をさらに悪化させるという悪循環です。

H.264にはどちらの問題もありません。フレーム間で差分圧縮し、数百万色をネイティブに扱えます。


2. 変換すべきとき・しないとき

MP4に変換すべき場面

  • Webサイトに貼る場合 — ファーストビューに10MBのGIFを置くとCore Web Vitalsが壊滅します
  • X(Twitter)・Instagram・Redditへの投稿 — どうせ内部でMP4に再エンコードされます。最初からMP4で上げた方が画質を制御できます
  • 3秒以上のアニメーション、または写真的なコンテンツ
  • 容量制限で弾かれている場合

GIFのままで良い場面

  • メール — ほとんどのメーラーは動画を再生しませんが、GIFならアニメーション表示されます
  • 自動再生&ループを確実に動かしたい場面(制御できない環境)
  • UIの小さなアニメーションで容量差が数百KBに留まる場合
  • LINEやDiscordのスタンプ枠など、GIF形式を明示的に要求される場面

要するに、GIFが生き残っている理由は「自動再生・ループ・互換性」であり、画質や効率ではありません。


3. 多くの変換ツールが間違えるポイント:フレームタイミング

ここが良い変換と雑な変換を分ける最大のポイントです。

GIFはフレームごとに個別の表示時間(delay)を持っています。 GIFは一定フレームレートである必要がなく、実際多くのGIFはそうではありません。最初のフレームが2秒、次の12フレームが各40ms、最後が1.5秒——こんな構成は珍しくありません。

雑な変換ツールはフレーム数だけ見て等間隔のfpsに押し込みます。結果、再生速度がずれ、意図的なポーズ(間)が消えてしまいます。

正しい変換は、各フレームのdelayを読み取り、本来のタイムラインを再構築してから出力フレームレートにリサンプルします。元のリズムがそのまま保たれるわけです。

GIF→MP4変換ツールはフレームごとのdelayを個別に読み取り、タイムラインを忠実に再現してからエンコードします。


4. 変換の手順

  1. GIFを読み込む。 フレーム数、各フレームのdelay、合計再生時間がローカルで解析されます。
  2. フレームレートを選ぶ。 24fpsがおすすめ。GIF自体の実効fpsより高くしても情報は増えず、容量だけ大きくなります。
  3. 出力サイズを設定。 100%で元の解像度を維持。拡大も可能ですがディテールは増えません。
  4. 背景色を選ぶ。 MP4には透過がないため、GIFの透明部分は指定色で埋められます。背景が白い場面なら白、暗い場面なら黒。
  5. 繰り返し回数を設定(必要な場合)。 一部のプラットフォームは3秒未満の動画を拒否します。短いGIFは2〜3回繰り返して長さを稼ぐのが簡単な回避策です。
  6. 変換&ダウンロード。

サーバーへのアップロードは一切なく、すべてブラウザ内で処理されます。


5. よくある質問

MP4にするとループしなくなる? ループは再生側の設定であり、ファイルに格納される情報ではありません。Webサイトなら<video>タグにloop属性を付ければ無限ループ。SNSでは短い動画は自動的にループ再生されます。変換で実用上失うものはほとんどありません。

どのくらい小さくなる? 一般的なアニメーションGIFで80〜90%削減が期待できます。テストでは320×320、40フレームのGIFが820KBから87KBになりました(89%減、画質劣化なし)。写真的なGIFほど削減率が高く、フラットなイラスト系GIFは差が小さくなります。

変換すると画質は落ちる? むしろ見た目は良くなるケースが多いです。GIFの時点で256色に量子化+ディザリング済みなので、MP4が失った色を復元するわけではありませんが、ディザリングのノイズが圧縮で目立たなくなります。

MP4からGIFに戻せる? はい。ただしサイズは再び大きくなります。動画→GIF変換ツールでフレームレート・横幅・ディザリングを制御しながら変換できます。

出力がWebMになるのはなぜ? H.264エンコードはブラウザの対応に依存します。FirefoxやLinuxの一部ではH.264が使えないため、VP9によるWebMにフォールバックします。WebMはChrome・Android・主要サイトで問題なく再生できます。

X(Twitter)にGIFを上げると勝手にMP4になるのはなぜ? Xのバックエンドは帯域節約と再生品質向上のため、GIFアップロード時に即座にループMP4へ変換します。最初からMP4で投稿すれば再エンコードの劣化を避けられます。


関連ガイド