跳转到内容

在 Mac 上压缩 Discord GIF

在 Mac 上剪短并裁切 GIF,降低帧率和宽度,重建调色板,使其符合 Discord 当前的附件大小限制。

你为团队的 Discord 导出了一份界面演示 GIF,却因文件达到 12 MB 而上传失败。Discord 会限制每条消息的附件大小,全屏录制的动态 GIF 很容易超出上限。在本地剪短循环、裁掉无关区域、降低帧率和宽度,再重新生成调色板,就能避免把尚未发布的界面上传到第三方在线压缩工具。对于每周都要发布动效预览的社区运营和开发团队,保存一个预设会比每次重新猜测频道设置更高效。

Discord 的 GIF 附件限制

Discord 目前文档规定非 Nitro 用户上传的文件上限为 10 MB ,并表示正在为部分用户测试不同的限制。Nitro 会员和实验性功能可能会改变你的账户接受的文件大小,因此在建立固定预设前,请先检查上传器显示的限制。

账户或测试状态建议做法
非 Nitro按目前公布的 10 MB 上限准备文件
Nitro 或测试中的限制导出前查看上传器显示的实际上限

目标文件大小应略低于账户显示的上限。一个 15 秒的全宽 GIF 即使在不裁剪的情况下,也可能超过更大的上限。

片段特点上传失败的原因
1920 px 全屏录制每帧像素过多
超过 15 秒的循环时长增加会直接增大文件
15 fps 屏幕录制帧数多于实际所需

在频道中询问 MP4 是否适用于你的使用场景。现代视频压缩通常比 GIF 更高效,并能保留完整色彩及可选音频。如果视频格式可接受,请参阅 convert GIF to MP4 on Mac 。请参阅 lossy vs lossless compression 了解为什么 GIF 的调色板限制在渐变上看起来模糊。

如需从屏幕录制创建 GIF,请参阅 video to GIF on Mac 。如需一般性的 GIF 压缩,请参阅 compress GIFs on Mac

符合 Discord 限制的设置

按照固定顺序操作以符合 Discord 上限:裁剪时长、裁切空白区域、降低宽度、降低帧率,最后进行调色板编码。

以 10 MB 上限为基准的场景建议设置
界面问题复现4 秒、宽 640 px、8 fps
功能预告6 秒、宽 800 px、10 fps
表情式反应动画2 秒、宽 480 px、8 fps
参数更小的文件更好的可读性
时长3-5 秒最长 6-8 秒
宽度480-640 px800 px
帧率8 fps10-12 fps
画面范围裁切后的面板全屏

移除重复的循环。Discord 会自动播放 GIF;对于复现步骤或表情反应,一个干净的循环即可。

当动作发生在屏幕一角时,先裁切再缩放。请参阅 crop GIF on Mac 了解坐标流程。

在发布前在 Finder 中检查文件大小。如果仍超出上限,在牺牲更多时长之前,先将帧率降至 8 或宽度降至 480 px。

使用 FFmpeg 为 Discord 压缩 GIF

打开 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 进行裁剪,以避免在循环开头编码空闲帧。

在发布前批量压缩文件夹中的 meme 或复现 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 显示器上验证输出文本的可读性。

GetCompress 适合重复处理 Discord GIF 的场景

FFmpeg 调色板配方足以应对偶尔的 GIF 压缩,且当频道接受视频时,MP4 通常是更好的格式。当团队反复将 MOVMP4 或过大的 GIF 源转换为适用于 Discord 的循环时,GetCompress 是更合适的选择。帧预览、裁剪、宽度预设和批量队列使结果更易于检查,无需为每次发布维护命令。

源文件仍需单独保留,Discord 上传器当前显示的规则也应作为最终依据。发布前请确认文件符合上限,并检查文字是否清晰可读。