halfsize

halfsize / 邮件附件

视频压到能发邮件

Gmail 卡在 25 MB,Outlook 和很多企业邮箱卡在 20 MB。 更麻烦的是:对方收到的附件,比硬盘上的文件大约大三成。这里把账算清楚,再给一条能过的命令。

没人算的那 33%

SMTP 是文本协议,二进制附件要 base64 编码:每 3 个字节变成 4 个。一个 19 MB 的 MP4,在邮件里大约是 25 MB。很多邮箱是按编码后的整封邮件算大小的,不是按你拖进去的文件。

这就是为什么「明明不到 20 MB」还是被退信。上限 25 MB,文件就该压到 18 MB 左右;上限 20 MB,压到 14–15 MB。

记一个系数:附件大小 ≈ 文件大小 × 1.37。按「上限 ÷ 1.37」压,就不用再担心。

一条命令

$ npx halfsize 旅行.mp4 --to 18mb

  target     18.0 MB
  plan       H.264  1280x720  2.19 Mbps  audio 128 kbps  2-pass
  scale      1920x1080 → 1280x720
  output     旅行.18mb.mp4

  214 MB  →  17.62 MB   小 12 倍   比目标小 2.1%
  VMAF 87.4   SSIM 0.968   轻微变软

--for email 直接按 18 MB 算,已经替 Gmail 留出 base64 的份额;--for outlook 按 15 MB 算,对应 20 MB 的邮件上限。要自己定就加 --to。

画质会变成什么样

一分钟的片子 18 MB,视频码率大约 2.2 Mbps。720p 够用,1080p 就显得紧,所以工具会主动降分辨率,而不是把 1080p 饿死。60 秒 1080p30、源 18 Mbps 的实测:

目标输出分辨率VMAF结论
18 MB17.62 MB1280×72087.4轻微变软
15 MB14.71 MB1280×72086.2轻微变软
10 MB9.77 MB960×54082.9轻微变软

VMAF 取片中位置和原片对比。90 以上「看着一样」,80–90「轻微变软」,70–80 能看出损失。

还是被退信怎么办

有些服务器限的是整个邮箱,或者不管设置如何,附件超过 10 MB 就拦。这种情况不要继续硬压,改发链接:

为什么不用在线压缩

因为要发邮件的视频,往往正是最私密的那些:身份证扫描、合同讲解、孩子演出、还没发布的产品演示。为了省两分钟,把它传到靠广告支撑的服务器上,不划算。halfsize 在你自己电脑上跑 FFmpeg:不上传、免注册、无额度、无水印。不想敲命令也可以用本地网页版:

$ npx halfsize --web
halfsize web UI on http://127.0.0.1:4174

常见问题

Gmail 到底能发多大?

按编码后的整封邮件算 25 MB,也就是文件大约 18 MB。用 Google Drive 链接不占这个额度,但对方需要有权限。

为什么 Outlook 拒收 20 MB 的文件?

base64 编码后已经超过 20 MB。压到 14–15 MB,或者直接问对方 IT 真实上限。

能保留 1080p 吗?

可以,加 --no-downscale。但一分钟 18 MB 的 1080p 会比 720p 更软。先用 --dry-run 看看两种方案。

对方需要装软件吗?

不需要。输出是标准 H.264 + AAC 的 MP4,带 +faststart,手机和邮箱客户端都能直接播。

免费吗?

免费。MIT 协议,没有付费版,也不要账号。

相关教程