動画をGIFに変換するツール
動画ファイルの一部をブラウザ内でそのままアニメーションGIFに変換します — 範囲、フレームレート、サイズを指定できます。アップロードは一切行われません。
254回閲覧
推定フレーム数: 30
GIFを作成中…
動画を読み込めないか、お使いのブラウザが対応していません。
GIFはなぜ「圧縮された動画」ではなく個々のフレームから作られているのか
アニメーションGIFは、MP4のように動画を圧縮したバージョンではありません — 根本的に異なる、はるかに古い形式です。それぞれが独自の小さな256色パレットを持つ完全な静止画像の連なりを、フレームごとの遅延時間を挟みながら次々と再生する仕組みです。この256色という制限は、GIF形式が生まれた1987年に由来します。当時は8ビット(256値)の色インデックスがその時代のハードウェアにとって実用上の上限だったためで、以来一度も変わっていません — だからこそ、写真的なコンテンツのGIFでは、動画形式では決して見られないような目に見えるバンディングやディザリングがよく現れます。このツールが各フレームを2段階の処理で変換するのもそのためです。まず色の量子化(フレーム内の実際の色を分析し、それを最もよく表す256色を選ぶ)を行い、続いてパレットマッピング(各ピクセルをその縮小されたパレットの中で最も近い色に再割り当てする)を行います。
ブラウザで動画ファイルからフレームを抽出するには、単純な「次のフレームを読む」というAPIは使えません。ブラウザは任意の動画ファイルに対してそのようなAPIを公開していないからです。代わりにこのツールは標準的な回避策を使います。動画要素のcurrentTimeを特定のタイムスタンプに設定し、ブラウザのseekedイベントを待ってその正確なフレームが実際にデコード・描画されたことを確認したうえで、その1枚の動画フレームをcanvasに描画し、ピクセルを読み戻します。選択したフレームレートに応じて決まる等間隔のタイムスタンプごとに、出力フレーム1枚につきこの処理を1回行うのはリアルタイム再生よりも遅くなりますが、抽出される各フレームが「なんとなくのスナップショット」ではなく正確なものであることを保証します。
フレームレートとGIFのファイルサイズは、動画圧縮では見られないほど直接的にトレードオフの関係にあります。変化した部分だけを保存する動画のフレーム間予測とは異なり、GIFでは1枚1枚のフレームがほぼ完全な画像であるため、フレームレートを2倍にすればファイルサイズもおおよそ2倍になります。このツールが実用的な範囲をあえて控えめなフレームレートに制限し、代わりにピクセルサイズを縮小できるようにしているのはそのためです — 10fpsで幅360pxのGIFは、同じクリップを640px・20fpsで作った場合と比べて劇的に小さく、多くの場合10倍以上の差になります。
良い結果を得るための設定選び
- 8〜12fpsの短いクリップ(2〜5秒)は、適度なサイズで滑らかに見えるGIFになります。前述のフレームごとのパレット制限のため、長いクリップや高いフレームレートではファイルサイズが急速に大きくなります。
- 広い単色領域を持つコンテンツ(画面録画、シンプルなアニメーション、アニメ調のイラストなど)は、写真や非常に精細な映像よりもGIFとしてはるかによく圧縮されます。単純なパレットから256色を量子化する方が、フルの写真的なグラデーションから256色を量子化するよりも失われる情報がずっと少ないためです。
- すべての処理はローカルで行われます。動画ファイルはブラウザの動画要素によって直接読み込まれ、デバイスの外に出ることは一切なく、エンコードもすべてJavaScriptで実行されます。
- フレーム抽出のステップ(シーク+待機+描画)は本質的にリアルタイム再生より遅いため、クリップが長くなったりフレームレートが高くなったりすると、要求されたフレームの総数に比例して、GIFが完成するまでの処理時間が目に見えて長くなります。
よくある質問
GIFが元の動画よりも画質が低く見えるのはなぜですか?
GIFは1987年に形式が作られて以来、8ビット・256色のパレットを使用しており、この制限は一度も変わっていません。すべてのフレームが最もよく一致する256色に量子化されるため、数百万色を使う元の動画では見られない目に見えるバンディングが、写真的なコンテンツではよく現れます。
フレームレートを高くするとファイルがなぜそんなに大きくなるのですか?
フレーム間の変化した部分だけを主に保存する動画圧縮とは異なり、GIFは各フレームを独自のパレットを持つほぼ完全な画像として保存します。フレームレートを2倍にすると保存される完全なフレーム数もおおよそ2倍になるため、動画コーデックのように平滑化されることなく、ファイルサイズはフレーム数にほぼ比例して大きくなります。
クリップが長いとGIFの作成に目に見えて時間がかかるのはなぜですか?
ブラウザは動画フレームを直接読み取る手段を提供していないため、このツールは正確な各タイムスタンプまで動画をシークし、そのフレームがデコードされたことをブラウザが確認するのを待ってから、それをキャプチャします — 出力フレーム1枚につき1回のシーク・待機サイクルが必要です。要求するフレームが多いほどこのサイクルも増え、瞬時の変換ではなく実際の処理時間として積み重なっていきます。
動画ファイルはどこかにアップロードされますか?
いいえ。動画はブラウザ内のHTML動画要素に直接読み込まれ、フレーム抽出、色の量子化、GIFエンコードといったすべての処理ステップはローカルでJavaScriptによって実行されます。サーバーに何かが送信されることはありません。
どのような元の動画がGIFに最もよく圧縮されますか?
画面録画、シンプルなアニメーション、アニメ調のイラストのように広い単色領域を持つコンテンツは、写真や非常に精細な映像よりもはるかによく圧縮されます。単純な色のパレットは256色に減らしても、フルの写真的なグラデーションほど多くのディテールを失わないためです。
関連ツール
問題を報告
動画をGIFに変換するツール
コメント
まだコメントはありません — 最初のコメントを書いてみましょう!