コンテンツへ移動

MacでDiscord用GIFを圧縮する

MacでGIFをトリミング、クロップ、フレームレートと幅の削減、パレット再構築を行い、現在のアップロード制限を確認してDiscord用に圧縮します。

チームのDiscord用にUIデモのGIFをエクスポートしました。12 MBでアップロードに失敗します。Discordはメッセージごとに添付ファイルのサイズ上限を設けており、フルスクリーンキャプチャのアニメーションGIFはその上限をすぐに超えてしまいます。解決策は、ステージング中のUIを他人のサーバーに置くランダムなオンライン圧縮ツールではありません。ループをトリミングし、パネルにクロップし、fpsと幅を下げ、ローカルでパレットを再構築します。週に1回モーションプレビューを投稿するコミュニティマネージャーや開発チームは、チャンネルごとに設定を推測するのではなく、1つの保存済みプリセットを活用するメリットがあります。

DiscordのGIF添付ファイル制限

Discordは 非Nitroファイルアップロードの最大値を現在10 MBと文書化 しており、一部のユーザーに対して異なる制限の実験を行っているとしています。Nitroや実験的な制限によりアカウントが受け付けるサイズは変動するため、恒久的なプリセットを作成する前にアップローダーを確認してください。

アカウントまたは展開状態対応
非Nitro現在文書化されている10 MBの上限を使用
Nitroまたは実験的制限エクスポート前にアップローダーに表示される値を確認

アカウントに表示される上限のやや下を目標にします。トリミングを行わない場合、15秒間のフル幅GIFはより大きな上限でも超える可能性があります。

クリップの習慣アップロードが失敗する理由
1920 pxの全画面フレームあたりのピクセル数が多すぎる
15秒以上のループサイズが線形に増加
15 fpsの画面キャプチャ必要なフレーム数より多い

MP4がユースケースに適しているかチャンネルで確認してください。最新の動画圧縮は通常GIFよりも効率的であり、フルカラーとオプションのオーディオを保持します。動画が許容される場合は MacでGIFをMP4に変換 を参照してください。GIFのパレット制限がグラデーションで 濁って見える理由を理解するには 可逆圧縮と非可逆圧縮 を参照してください。

画面録画からGIFを作成するには Macで動画からGIFに変換 を参照してください。一般的なGIFの縮小には MacでGIFを圧縮 を参照してください。

Discordの上限に合わせた設定

Discordの上限に合わせるには、以下の固定順序で処理します。期間のトリミング、不要な領域のクロップ、幅の縮小、fpsの低下、そしてパレットエンコードです。

10 MBベースラインの開始点推奨設定
UIバグ再現4秒、幅640 px、8 fps
機能ティザー6秒、幅800 px、10 fps
エモジ風リアクション2秒、幅480 px、8 fps
パラメータファイルサイズを小さく可読性を良く
期間3〜5秒最大6〜8秒
480〜640 px800 px
fps810〜12
ソースクロップされたパネルフルスクリーン

重複するループを削除します。DiscordはGIFを自動再生するため、再現やリアクションには1つのクリーンなサイクルで十分です。

アクションが画面の一角にある場合は、スケール処理の前にクロップしてください。座標ワークフローについては MacでGIFをクロップ を参照してください。

投稿前にFinderでファイルサイズを確認します。まだ上限を超えている場合は、さらに期間を削る前にfpsを8、または幅を480 pxに下げます。

FFmpegでDiscord用に圧縮

Terminal(アプリケーション → ユーティリティ → ターミナル)を開きます。Homebrewを通じてFFmpegをインストールします(brewが見つからない場合はまずHomebrewをインストールしてください)。

brew install ffmpeg

MP4ソースからのDiscord対応パレットパイプライン:

ffmpeg -i clip.mp4 -vf "fps=8,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 discord.gif

既存のサイズ超過GIFを再圧縮:

ffmpeg -i big.gif -vf "fps=8,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 discord-small.gif

パネルのみの再現用にクロップする場合:

ffmpeg -i big.gif -vf "crop=700:500:80:120,fps=8,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 discord-cropped.gif
表示された上限をまだ超えている次の調整項目
640 px 8 fps後3秒にトリミング
トリミング後幅480 px
480 px後MP4としてエクスポート

ループの開始部分でアイドルフレームをエンコードしないよう、FFmpegの前にQuickTimeでトリミングしてください。

ローンチ発表前に、ミームや再現用GIFファイルのフォルダを一括圧縮します:

mkdir discord-out
for f in *.gif; do
  ffmpeg -i "$f" -vf "fps=8,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 "discord-out/${f}"
done

公開チャンネルに投稿する前に、Retinaディスプレイ上で出力のテキスト可読性を確認してください。

定期的なDiscord GIF作業にGetCompressが適している場合

FFmpegのパレットレシピは 単発のGIF作成には十分であり、チャンネルが動画を受け付ける場合はMP4が通常はより良いフォーマットです。チームがMOVMP4、またはサイズ超過のGIFソースをDiscord対応のループに繰り返し変換する場合は、GetCompressがより適しています。フレームプレビュー、トリミング、幅プリセット、バッチキューにより、投稿ごとにコマンドを維持することなく結果を簡単に確認できます。

元のマスターファイルは保管し、Discordに表示される最新の上限を確認してください。投稿前には、最終的な文字の読みやすさも確認します。