抽出段階で GIF が失敗する理由
ほとんどの悪い GIF は、GIF ソフトウェアを開く前に判断されます。誰かが 5 秒間のクリップのすべてのフレームを抽出し、150 枚の画像を取得して組み立てると、チャット アプリが埋め込みを拒否する 14 MB のファイルができあがります。本能的により強く圧縮しようとするため、あまり小さくすることなく濁ってしまいます。
実際の問題は上流にあります。 GIF はビデオ コーデックではありません。GIF には動き補償がなく、名前に値するフレーム間予測もなく、フレームあたり 256 色の厳しい上限があります。すべてのフレームは独立した画像に近くなります。この 1 つの事実が、以下のすべての決定を左右します。
考えるべき順序は次のとおりです。最初にフレーム数を決定し、次にパレットを決定し、次に圧縮について心配します。
ステップ 1: サンプリング間隔を選択する
問題は、「ソースにフレーム数がいくつあるか」ではなく、「モーションに実際に必要なフレーム数がどれくらいか」です。大まかな開始点:
- 10 ~ 12 fps これが主力設定です。ジェスチャー、UI デモ、およびほとんどのリアクション クリップに十分なスムーズさ。 30 fps ソースでは、これは 3 フレームごとです。 60 fps、5 回ごと。
- 15 fps — カメラのパンやバウンドするオブジェクトなど、12 がストロボを開始する連続モーションの場合。
- 5 ~ 8 fps — スライドのようなコンテンツの場合: グラフの構築、ビフォー/アフター、低速ズーム。多くの場合、安っぽく見えるというよりも、意図的に作られているように見えます。
- 24+ fps — 価値があることはほとんどありません。ファイル サイズは 12 fps に対して約 2 倍になり、ほとんどの視聴者は小さなループ画像では判別できません。
フレーム抽出ツール では、「フレーム レート (FPS)」モードを使用し、3 フレームごとに 3、5 フレームごとに 5 という除数を入力します。入力するとフレーム数が更新されます。これは実際にファイル サイズを予測する数値です。
抽出する前に健全性をチェックします: は、意図したフレーム数を約 30 ~ 60 KB 倍にします。これは、パレット縮小後の 480 ピクセル幅の GIF フレームの現実的な予測値です。 60 フレームは約 2 ~ 3 MB になります。予算を超える場合は、今すぐフレームをカットしてください。後で圧縮するよりもはるかに効果的です。
ステップ 2: 期間を短くする
GIF には長い形式の使用例がありません。 2 ~ 4 秒でループとして機能するほとんどすべてがカバーされ、ループ ポイントは長さよりも重要です。クリップの開始点付近で終了するクリップは連続しているものとして認識されますが、モーションの途中でカットされるクリップは繰り返しのたびに継ぎ目に注意を引きつけます。
時間範囲スライダーを使用して、後でフレームを削除するのではなく、抽出前にトリミングします。ドラッグするとタイムスタンプが表示されるため、イン ポイントと同じポーズでアウト ポイントを着地させることができます。
ステップ 3: 256 色の制限を理解する
これは人々を驚かせる制約であり、戦うよりも理解する価値があります。
すべての GIF フレームは、最大 256 色のパレットにインデックス付けされます。ソースビデオには何百万ものビデオがあります。何かが違いを捨てる必要があり、それがどのように行われるかによって、結果がどのように見えるかが決まります。
2 つの戦略。正しいものは完全にコンテンツによって異なります。
- ディザリング ピクセルを散乱させるのではなく、
- ディザリングはありません 平らできれいなカラー領域が得られ、ファイルははるかに小さくなります。画面録画、UI デモ、ライン アート、大きな均一領域を持つものに最適です。写真のグラデーションではハード バンディングが生成されます。
実際的なルール: 画面コンテンツ、ディザリングなし。カメラ映像、ディザリングオン。よくわからない場合は、両方をエクスポートして実際のサイズで見てください。違いは明らかであり、1 分で完了します。
これが抽出する理由でもあります。 PNG 最終的な GIF が 256 色であるとしても、これは正しい判断です。ソース内のすべての JPEG アーティファクトは、パレットがエントリを費やす必要がある色になります。クリーンでロスのないフレームをパレット ステップに入力すると、量子化器の開始点が向上します。
ステップ4: フレーム遅延を抽出した間隔に合わせる
GIF にはフレーム レートが保存されません。フレームごとの遅延を 100 分の 1 秒単位で保存します。そして、多くの GIF が間違った速度で再生されるのはここです。
計算は簡単です: 遅延 = 100 ÷ ターゲット fps。
- 12 fps → 遅延 8 (0.08 秒)
- 10 fps → 遅延 10 (0.10 秒)
- 15 fps → 遅延 7 (6.67 に四捨五入)
- 5 fps → 遅延 20 (0.20 秒)
知っておくべき 2 つの点。まず、丸めは現実的です。15 fps は正確に表現できないため、ループはわずかにずれます。タイミングが重要な場合は、きれいに分割される 10、12.5、20、または 25 fps を優先します。第 2 に、ほとんどのブラウザは遅延を 2 (0.02 秒) 未満で最大 10 まで自動的にクランプします。そのため、50 fps で作成された GIF は、ほとんどの視聴者にとって 10 fps で再生されますが、ファイル サイズは 5 倍であり、滑らかさはありません。
ステップ 5: 機能する順序でサイズをカットします
ファイルがまだ大きすぎる場合は、これらを順番に適用してください。それぞれの保存されたバイトあたりの品質コストは、その後のものよりも低くなります。
- 寸法を小さくします。 幅を半分にすると、ピクセル数が 4 分の 1 になります。幅 480 ピクセルの GIF は、ほとんどの埋め込みコンテキストに適しています。 800 以上が必要になることはほとんどありません。
- フレームをドロップします。 15 fps から 10 fps に変更すると、ほとんどの視聴者が認識しない変化のデータの 3 分の 1 が削除されます。
- クリップを短くします。 無慈悲に。ほとんどすべての GIF の開始または終了には何もしない 1 秒があります。
- パレットを 256 未満に減らします。 128 色または 64 色でさえ、画面コンテンツでは表示されないことがよくあります。
- ディザリングをオフにする オンにしてコンテンツがそれを受け入れることができた場合。
「より強く圧縮する」がリストにないことに注意してください。 GIF の圧縮はロスレス LZW です。品質ダイヤルはありません。できることは、最初にどのデータを含めるかを決定することだけです。
GIF をまったく作成すべきではない場合
多くの労力を節約できるため、明確に言う価値があります。
- 約 5 秒以上のもの。 MP4 または WebM は、より良い品質でサイズが数分の一になります。 「GIF」を受け入れるほとんどのプラットフォームは、現在、GIF を内部的にビデオに変換します。
- グラデーションの多い写真コンテンツ。 256 色ではまったく不十分であり、パレットのトリックを使っても解決できません。
- 音声が必要なもの。 GIF には何もなく、ソースにビートがある場合、ループは間違ったものに感じられます。
- 幅 800 ピクセルを超えるもの。 その頃には、サイズペナルティが十分に厳しくなり、ビデオが正解になります。
GIF は、プレーヤーなしでどこでも機能する、短くて静かな自動再生ループという、まさに 1 つの状況でその役割を果たします。その点では、入力されるフレームが意図的に選択されている限り、まだ無敵です。
実際の例
3 秒の UI の GIF が必要だとします。 60 fps の画面録画からのインタラクション、1 MB 未満。
- トリム インタラクションを含む 3.2 秒まで。最後のフレームは最初のフレームに近い。
- 抽出 N = 5 の FPS モードでは、60 fps の 5 フレームごとに 12 fps、つまり約 38 フレームが得られます。 PNG 出力。
- 組み立て 遅延 8 では、ディザリングはオフになります (単色の画面コンテンツです)。
- 拡大縮小 ソースが大きい場合は幅 600 ピクセルまで。
- 結果を確認します。 フラット UI コンテンツの約 38 フレームは、通常、1 MB をはるかに下回ります。そうでない場合は、他のものに触れる前にパレットを 128 色にドロップします。
全体に数分かかります。すべてのステップは、継承したデフォルトではなく、ユーザーが行った決定です。