halfsize

halfsize / 平台上限

各平台的视频大小上限,一张表

每个平台都写了一个上限,但几乎每个上限的算法都和系统里显示的数字不一样。下面是人真正会撞到的限制, 2026 年 11 月核对,以及每个限制对应的一条命令。

当前上限

平台上限按什么算怎么压
Discord(免费)20 MB单个文件、单条消息--for discord
WhatsApp16 MB作为媒体发送的视频--for whatsapp
微信20 MB聊天里发送的视频--for wechat
Gmail25 MBbase64 之后的整封邮件--for gmail
Outlook.com20 MBbase64 之后的整封邮件--for outlook
X / Twitter512 MB单条视频上传--for twitter
Telegram2 GB单个文件,会员 4 GB--to 2gb
Slack(免费)1 GB单个文件--to 1gb
YouTube256 GB单次上传,最长 12 小时不是这个场景

平台会不打招呼就改上限,付费档位也不一样。预设只是省事,--to 永远优先。

为什么「显示 20 MB」却传不上去

有三笔账会一起吃进上限,而且是叠加的:

经验值:普通上传留 5% 余量;邮件附件先除以 1.37。--for 已经帮你算好了。

一条命令对应一个上限

$ npx halfsize 假期.mp4 --for discord

  target     20.0 MB
  plan       H.264  1280x720  2.46 Mbps  audio 128 kbps  2-pass
  scale      1920x1080 → 1280x720
  output     假期.discord.mp4

  136 MB  →  19.45 MB   小 7.0 倍   比目标小 2.7%
  VMAF 88.3   SSIM 0.971   轻微变软

换成你要对付的平台就行:--for whatsapp、--for wechat、 --for gmail、--for outlook、--for twitter。其他限制直接写 --to 800mb 或 --to 700k。

每个上限要付出多少画质

同一个 60 秒 1080p30、18 Mbps 的源片(136 MB),在普通笔记本上本地实测:

目标输出分辨率VMAF结论
20 MB(Discord / 微信)19.45 MB1280×72088.3轻微变软
18 MB(Gmail)17.62 MB1280×72087.4轻微变软
16 MB(WhatsApp)15.59 MB960×54084.8轻微变软
10 MB9.77 MB960×54082.9轻微变软
5 MB4.93 MB640×36072.0能看出损失

VMAF 90 以上是「几乎看不出差别」,80–90 是轻微变软,70–80 是能看出损失。实际数字随内容变化,讲话镜头比彩带雪花好压得多。

目标在算术上就做不到的时候

上限本质是码率预算:字节 × 8 ÷ 秒。一小时的视频塞进 20 MB,视频加音频只有 44 kbps, 没有编码器能让它好看。0.1.9 起,工具会在编码前直接说明,并告诉你这段时长最小能压到多少, 而不是花十分钟压完再交给你一个还是塞不进去的文件。真正的解法是剪短。

常见问题

为什么 20 MB 的文件传不进 20 MB 的限制?

十进制 MB 和二进制 MiB 的差别、邮件 base64、容器开销都会吃预算。留 5% 余量,或者直接用预设。

Discord 免费用户上限多少?

2026 年 11 月是单个文件 20 MB,Nitro 更高。档位不同就用 --to 覆盖。

微信发视频会被二次压缩吗?

作为聊天视频发送会被再压一次,而且只有 20 MB。先自己压到限制以内,至少损失是可控的。

能压到 2 GB 这种大目标吗?

可以,前提是源片有足够码率可花。短视频撑不满大上限,超长视频也塞不进小上限。

视频会被上传吗?

不会。FFmpeg 在你自己的电脑上跑,免账号、无额度、无水印。

相关教程