halfsize

halfsize / 微信

微信视频超过 20 MB,怎么发?

微信聊天里的视频上限是 20 MB。超过就发不出去,或者被压得面目全非。 与其让它随手压一遍,不如先自己压到限制以内,再让它几乎无事可做。

三步搞定

  1. 装好 Node.js 18+。
  2. 在视频所在文件夹打开终端。
  3. 运行 npx halfsize 视频.mp4 --for wechat,然后把生成的 视频.20mb.mp4 发出去。
$ npx halfsize 视频.mp4 --for wechat

  halfsize 0.1.5
  视频.mp4
  136 MB  60s  1920x1080  30.00 fps  h264

  target     20.0 MB   (wechat)
  plan       H.264  1280x720  2.46 Mbps  audio 128 kbps  2-pass
  output     视频.20mb.mp4

  measuring quality                                        done in 8s

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

为什么「发原视频」也救不了

微信的「原视频」选项只是减少二次压缩,并不会把 20 MB 的上限提高。文件本身超了,还是发不出去。所以顺序应该是:

  1. 先在自己的电脑上压到 19 MB 左右,把码率花在真正重要的地方;
  2. 再发给微信,让它只做很轻的一遍处理。

如果直接丢一个 200 MB 的文件进去,微信要在一次编码里扔掉 90% 的比特,结果自然糊。这就是同样 20 MB,别人发的清楚、你发的糊的原因。

20 MB 能换到多少画质

目标自动分辨率视频码率VMAF结论
20 MB1280×7202.46 Mbps88.3轻微变软
16 MB960×5401.94 Mbps84.8轻微变软
10 MB960×5401.17 Mbps82.9轻微变软

实测条件:60 秒、1920×1080、30fps、18 Mbps 源片。画面越复杂,同样码率下画质越差。

视频太长,20 MB 一定不够。10 分钟的视频分到 20 MB,视频码率只有 0.25 Mbps 左右,任何编码器都救不回来。要么剪短,要么当文件发。工具会用 VMAF 告诉你有没有越过这条线。

几个实用建议

常见问题

微信视频上限是多少?

聊天里发送视频为 20 MB;--for wechat 就是按这个上限压的。

视频会上传吗?

不会。编码和测量都在本地 FFmpeg 完成,免账号、无额度。

能保持 1080p 吗?

加 --no-downscale 可以。但 20 MB 给一分钟 1080p 只有 2.4 Mbps,通常不如 720p 清楚。

H.265 会更清楚吗?

同尺寸下大约多 30% 画质,但部分旧手机兼容性差。家庭群里发,H.264 更稳。

VMAF 怎么看?

90 以上看起来一样,80–90 轻微变软,70–80 能看出损失,70 以下明显变差。

其他限制