UltKit

動画からGIFを作る方法:サイズ・フレームレート・ループのコツ

動画からGIFを作るには、2〜6秒の場面を選び、幅320〜640 pxに縮小し、フレームレートを10〜15 fpsに下げ、変換ツールにそのクリップから256色のパレットを作らせます。この4つの選択で、鮮明な2 MBのループになるか、どのチャットアプリにも送れない30 MBのファイルになるかが決まります。

Mina SatoMina Sato音声・動画担当編集者
更新日 11 分で読めます
暗い部屋で木箱の上に置かれたヴィンテージの映写機が、もやの中に明るい光を投げかけている様子

GIFファイルには実際に何が保存されているのか

GIFはウェブより古い形式です。1987年にCompuServeが最初のバージョンであるGIF87aを公開しました。ダイヤルアップ回線で静止画を送るための形式でした。1989年の改訂版GIF89aで、アニメーションを可能にする2つの機能、フレームごとの遅延時間と1色の透明色が追加されました。ループ再生は1995年、Netscape Navigator 2.0が繰り返し回数を指定する小さなアプリケーション拡張を読み取るようになってからです。現在のアニメーションGIFもすべてこのブロックを含むGIF89aファイルであり、そのためほぼすべてのブラウザやメールソフトで再生できます。

GIFの中身は、インデックスカラー画像の積み重ねです。各フレームは最大256エントリのカラーテーブルを参照するため、元の動画に数百万色あっても、1フレームで表示できるのは256色までです。ピクセルはLZWという可逆の辞書式圧縮で圧縮されます。単色の平坦な領域には効果的ですが、写真のノイズ、粒状感、グラデーションには不向きです。LZW自体は何も捨てません。画質が落ちるのは、その前に数百万色をパレットに押し込む段階です。

GIFにはもう2つ、保持できないものがあります。まず音声トラックがないため、動画の音は消えます。次にタイミングが粗く、遅延は100分の1秒単位で保存され、多くのブラウザは0や1(100分の1秒)の遅延を10(100分の1秒)として扱います。そのため50 fps以上で作ったGIFは、滑らかになるどころか遅く再生されます。実用的な範囲は10〜25 fpsです。

GIF89aでアニメーションに対応
1989
1フレームあたりの最大色数
256
最小の遅延単位
1/100秒
音声トラック
0

GIFが重くなる理由と、容量を減らす順番

H.264のような現代の動画コーデックは、完全な画像をときどきしか保存せず、ほとんどのフレームを直前からの小さな変化として記録します。GIFも前のフレームの一部の矩形だけを更新することで多少は同じことができますが、動き予測のような仕組みはありません。カメラが動くとほぼすべてのピクセルが変わり、各フレームがほぼそのまま保存されます。そのため2 MBのスマホ動画が15 MBのGIFになることもあれば、静止したウィンドウ上でマウスが動くだけの画面録画は非常に小さいままです。

GIFの容量はおおよそ幅×高さ×フレーム数で決まり、フレーム間で変化しない部分があるほど小さくなります。このため、効果の大きい順に調整項目を並べられます。長さはフレーム数にそのまま効き、8秒を4秒にすれば半分になります。幅はピクセル数に2乗で効き、640 pxから320 pxにすると各フレームのピクセルは4分の1です。フレームレートもフレーム数に比例して効き、身振りや顔なら12 fpsでも意外と十分です。色数を減らす効果は思ったより小さく、通常10〜30%です。LZWはパレットの大きさより繰り返しパターンを重視するためです。

ディザリングは、多くの人が迷うトレードオフです。パレットにない色合いを近い色の点を散らして擬似的に表現するので、空や肌の帯状のムラ(バンディング)は目立たなくなりますが、LZWが苦手な細かいノイズが加わります。画面録画、アニメ調の絵、UIのデモなど、もともとベタ塗りの映像ではオフにし、実写ではオンのままにします。最後の調整手段はクロップで、動かない縁や黒帯を切り落とせば、被写体に手を加えずにピクセルを減らせます。

  1. 1番目クリップを短くする1秒削れば、そのフレームもなくなります。ほとんどのリアクションは2〜6秒で収まります。
  2. 2番目幅を小さくする幅を半分にするとピクセルは4分の1になります。チャット画面なら320〜480 pxが適しています。
  3. 3番目フレームレートを下げる10〜15 fpsなら動きが読み取れます。ゆっくりした画面録画なら8 fpsでも十分です。
  4. 4番目色数とディザリングを減らす図やグラフィックは64〜128色でディザリングなし、実写は256色でディザリングありにします。

クリップの開始点と終了点の選び方

共有されるGIFの多くは、リアクション、ゴール、ボタンのクリックとその後の画面など、ひとつの見せ場だけです。頭の中でストップウォッチを動かしながら動画を一度見て、見せ場が始まる秒と、はっきり決まった秒をメモし、ループが唐突にならないよう前後に数フレームずつ足します。元の動画が長い場合は、先に動画トリミングで範囲を切り出し、短いファイルで作業します。コンバーターなら、開始位置と終了位置に秒または分:秒で時間を入力すれば、別の手順なしで同じことができます。

GIFの再生開始位置も考えておきましょう。多くのチャットアプリやメールソフトは、読み込み中に最初のフレームを表示します。2007〜2016年のWindows版Outlookは最初のフレームしか表示せず、アニメーションしません。パンの途中のぶれた場面ではなく、静止画として意味が通じるフレームから始めてください。GIFの要点が字幕や結果なら、終了位置を延ばしてその最後の場面を0.5秒ほど保持し、ループが再開する前に読めるようにします。

TipGIFにすることを前提に撮影しましょう。スマホを固定し、被写体を画面いっぱいに収め、ズームは避けます。固定ショットなら、同じ設定でも手持ち撮影の半分ほどの容量になることがあります。

砂漠の空を背景に、シーン番号とテイク番号が手書きされたカチンコを持つ2つの手
写真:Unsplash

Discord・Slack・GIPHY・X・RedditのGIF容量制限

どの設定よりも先に、GIFの投稿先が容量の上限を決めます。Discordは2024年に無料アカウントのアップロード上限を1ファイル10 MBに下げており、多くの人が最初にぶつかる数字です。Nitro Basicなら50 MB、Nitroなら500 MBに上がります。GIPHYは15秒・100 MBまでアップロードできます。Xは15 MBまでのGIFを受け付け、アップロード時にループ動画へ変換します。RedditはGIFを100 MBまで受け付けますが、こちらも動画として配信します。Slackは1 GBまでのファイルを扱えますが、カスタム絵文字は128 KB未満に収める必要があり、幅を極小にして、短いループと少ない色数にすることになります。

メールは特殊です。Gmailは1通あたり25 MB、Outlook.comは20 MBまでの添付が可能ですが、ニュースレターや署名の本文にインラインで入れるGIFは、モバイル回線でもすぐ開けるよう1 MBを大きく下回るのが望ましいです。チャットでは、受け取る側の回線が遅いこともあるため、上限ぎりぎりではなく半分程度を目安にしてください。下の数値は2025年時点のものです。上限すれすれのときは、各サービスのヘルプページで確認してください。

2025年時点のGIFアップロード上限
投稿先上限GIFの扱われ方
Discord(無料アカウント)1ファイル10 MBその場で再生・ループ
Discord Nitro Basic / Nitro50 MB / 500 MBその場で再生・ループ
Slackのメッセージ / カスタム絵文字1 GB / 128 KB閲覧者がアニメーションをオフにしていなければその場で動く
GIPHYへのアップロード15秒、100 MBGIF、MP4、WebPの各形式で配信
X(Twitter)15 MB音声なしのループMP4に変換
Reddit100 MB再生用に動画へ変換
メール本文へのインライン挿入1 MB未満を推奨Windows版Outlook 2007〜2016は最初のフレームのみ表示

GIFよりMP4・WebM・WebP・APNGが適している場合

XがアップロードされたすべてのGIFを2014年からMP4に変換しているのは、通信量のためです。GIFで4 MBになる同じ5秒間も、H.264なら数百KBに収まるのが一般的で、256色ではなくフルカラーになり、ディザリングのノイズもありません。GIPHYやTenorも同様で、キーボードのGIFボタンは通常、小さなMP4やWebPを取得しています。つまり問うべきは、最良のGIFの作り方ではなく、投稿先にそもそもGIFが必要かどうかです。

投稿先が画像は表示できても動画は表示できない場合は、本物のGIFを使います。たとえばメール本文、GitHubのREADMEやIssue、Jiraのチケット、wiki、古いフォーラム、どのビューアーでも動く必要のあるスライドです。動画がミュートでその場再生される場所、つまりほとんどのSNSや最新のチャットアプリでは、MP4やWebMのループのほうがきれいで読み込みも速くなります。自分で管理できるウェブページなら、<video autoplay muted loop playsinline>要素でGIFと同じように動作させられ、データ量はごくわずかで済みます。

この中間にある画像形式が2つあります。Google発のアニメーションWebPは、数百万色と非可逆圧縮に対応し、2020年のバージョン14からSafariでも再生できるため、現行の主要ブラウザすべてで動きますが、ブラウザ外のアプリには非対応のものが多くあります。APNGはPNGにフレームを加えた形式で、フルカラーと本物のアルファ透明を保てます。AppleやLINEがアニメーションスタンプに使っています。すでにGIFがあり、動画を再生できるサイト向けに小さくしたいだけなら、GIFをMP4に戻すのが、たいてい最も大きな削減になります。

どこでも再生

GIF

256色で音声なし、ファイルは大きくなりますが、どこでも画像として表示されます。

  • メール本文、README、チケット、wiki
  • 再生ボタンなしでループ
  • 4形式の中で容量に対する画質が最も悪い
Best for: 画像は表示できるが動画は表示できない場所。
最小

MP4またはWebM

フルカラーで動き圧縮にも対応し、容量は10分の1ほどになることもあります。

  • 音声を残せる
  • ほとんどのSNSでミュートで自動再生
  • 多くのメールアプリではインライン表示されない
Best for: SNS投稿、チャットアプリ、自分で管理するウェブページ。
画像形式

アニメーションWebPまたはAPNG

フルカラーのアニメーション画像。APNGは滑らかな透明にも対応します。

  • 現行のすべてのブラウザで動作
  • デスクトップアプリやメールでは対応にばらつきがある
  • APNGはスタンプでよく使われる
Best for: ウェブサイトやスタンプパック。

動画からGIFを作る6つの方法

スマホなら追加アプリなしで作れます。iPhoneでは、ショートカットアプリに動画またはLive Photoを受け取るGIFを作成アクションがあり、元素材はLive Photoのループやバウンス効果で手早く撮れます。SamsungのギャラリーアプリはGIFボタンが動画再生中に表示され、見えている区間をGIFとして記録します。GIPHYアプリとウェブ版GIF Makerなら、トリミング、キャプション、アップロードを1か所で行えますが、保存だけにしない限り結果は公開されます。Photoshopではファイル > 読み込み > ビデオフレームからレイヤーへで最大500フレームを取り込め、書き出し > Web用に保存(従来)でパレットとディザの設定付きでGIFを書き出せます。

細かく制御したい場合や一括処理には、ffmpegの2パスのパレット方式が最もきれいに仕上がります。最初のフィルターでクリップを走査して実際の色から256色のパレットを作り、2番目のフィルターで各フレームをそれに割り当てます。下の1行コマンドは、0:02から5秒を切り出し、幅480 pxに縮小し、12 fpsでサンプリングして無限ループにします。ブラウザでは、動画GIF変換が同じパレット処理を行い、幅、フレームレート、色、ディザリングで調整できます。MP4をGIFに変換ページでは、MP4があらかじめ選択された状態で開きます。MOVのスマホ動画も同じ方法で扱えます。アプリに拒否される場合は、先にMOVをMP4に変換を読んでください。

iPhone

  1. 01ショートカットで、写真を選択 → GIFを作成 → フォトアルバムに保存の順に組みます。
  2. 02実行して動画またはLive Photoを選びます。長いクリップは先に写真アプリでトリミングしてください。
  3. 03写真アプリのアニメーションアルバムからGIFを共有します。

Android

  1. 01Samsungのギャラリーで動画を開き、再生中にGIFをタップします。
  2. 02ハンドルをドラッグして、使いたい区間に合わせます。
  3. 03保存をタップします。他のスマホでは、Chromeでウェブのコンバーターを使います。

パソコン

  1. 01Photoshopでファイル > 読み込み > ビデオフレームからレイヤーへを選びます。
  2. 02タイムラインパネルでフレームの遅延と無限ループを設定します。
  3. 03Web用に保存(従来)でGIFとして、128〜256色で書き出します。
ffmpeg:0:02から5秒、幅480 px、12 fps、ループ
ffmpeg -ss 2 -t 5 -i 入力.mp4 -vf "fps=12,scale=480:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p]paletteuse" -loop 0 出力.gif

きれいなループと最後の画質チェック

GIFは、Netscape拡張のループ回数が0(無限)で書き込まれるため、標準では永遠にループします。回数を1にすると、1回再生して最後のフレームで止まります。メッセージで終わるGIFに向いています。難しいのは、ループのつなぎ目を目立たなくすることです。手を振って元の位置に戻る動きのように、開始フレームと終了フレームがほぼ同じ区間を探すか、ブーメランで前方向と逆方向に続けて再生してください。つなぎ目の飛びはなくなりますが、フレーム数は2倍になります。

送る前に、サムネイルではなく実際のサイズでGIFをブラウザのタブで開き、ループを3回通して確認してください。選んだ幅でフレーム内の文字が読めるか、顔がポスタリゼーションでまだらになっていないか、動画とタイミングが合っているかを見ます。そのうえで、ファイルサイズを上の表の上限と比べてください。ぎりぎりの場合は、長さ、幅、フレームレート、色数の順に削る手順に戻ります。長い動画や音声付きの動画には、Discordやメール用に動画を圧縮する方法のほうが向いています。

  • 空、影、肌にバンディング(縞模様)が出る

    パレットの階調が足りなくなっています。256色のままディザリングをSierraまたはFloyd–Steinbergに切り替えるか、グラデーションの多い映像ならMP4で送ってください。

  • GIFの再生が動画より速い、または遅い

    フレームの表示時間は100分の1秒単位で保存されます。10、20、25 fpsは割り切れます。50 fpsを超える値は、ブラウザ側で遅く再生されます。

  • フレーム内の文字が読めない

    幅を640 pxに上げ、その分フレームレートを下げてください。または、変換前に文字のある範囲にトリミングしてください。

  • ループが戻るときにつなぎ目が見える

    開始位置と終了位置を、絵が一致するフレームに合わせてください。またはブーメランをオンにして、範囲を半分に短くしてください。

ポイント

  • GIFは1フレームあたり最大256色で、音声は含められず、フレームの表示時間は100分の1秒単位です。
  • サイズは長さ、幅、フレームレートで決まります。色数に手を付ける前に、この順で削ってください。
  • 目安は2~6秒、320~640 px、10~15 fpsです。画面録画ではディザリングをオフにします。
  • 上限は、Discord無料版が10 MB、Xが15 MB、GIPHYが15秒・100 MB、Slackの絵文字が128 KBです。
  • 動画をその場で再生できる場所では、MP4やWebMのループのほうがどのGIFよりも小さく、きれいです。
共有XFacebookWhatsAppTelegram

よくある質問

動画から作るGIFに最適なフレームレートは?

ほとんどの動画は10~15 fpsで十分です。動きの速いスポーツやゲームの映像なら20 fpsにする価値があります。動きの遅い画面録画は8 fpsでも問題なく見え、ファイルサイズもかなり小さくなります。

GIFは何秒にすればよいですか?

リアクション、操作デモ、ハイライトのほとんどは2~6秒で収まります。10秒を超えるとGIFはすぐ重くなるため、共有するなら短いMP4のほうが向いています。

GIFは可逆圧縮ですか?

GIF内部のLZW圧縮は可逆ですが、変換そのものは可逆ではありません。動画の数百万色を、フレームごとに256色のパレットへ減らすためです。バンディングやざらつきは、この減色が原因です。

XでGIFが動画に変換されるのはなぜですか?

Xは2014年から、アップロードされたGIFをループするMP4に変換しています。動画のほうがはるかに小さく、フルカラーを保てるためです。投稿はGIFと同じく、音なしでループ再生されます。

YouTube動画からGIFを作れますか?

使用する権利があり、端末に保存してあるファイルからのみ作れます。自分でアップロードした動画はYouTube Studioからダウンロードするか、元の録画を使い、トリミングしてから変換してください。

GIFとアニメーションWebPの違いは何ですか?

アニメーションWebPは数百万色、非可逆圧縮、なめらかな透過に対応しているため、たいていはかなり小さくなります。GIFは、WebPに対応しないメールソフトや古いアプリなど、より多くの場所で表示できます。

関連記事