halfsize / 微信
微信视频超过 20 MB,怎么发?
微信聊天里的视频上限是 20 MB。超过就发不出去,或者被压得面目全非。 与其让它随手压一遍,不如先自己压到限制以内,再让它几乎无事可做。
三步搞定
- 装好 Node.js 18+。
- 在视频所在文件夹打开终端。
- 运行
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 的上限提高。文件本身超了,还是发不出去。所以顺序应该是:
- 先在自己的电脑上压到 19 MB 左右,把码率花在真正重要的地方;
- 再发给微信,让它只做很轻的一遍处理。
如果直接丢一个 200 MB 的文件进去,微信要在一次编码里扔掉 90% 的比特,结果自然糊。这就是同样 20 MB,别人发的清楚、你发的糊的原因。
20 MB 能换到多少画质
| 目标 | 自动分辨率 | 视频码率 | VMAF | 结论 |
|---|---|---|---|---|
| 20 MB | 1280×720 | 2.46 Mbps | 88.3 | 轻微变软 |
| 16 MB | 960×540 | 1.94 Mbps | 84.8 | 轻微变软 |
| 10 MB | 960×540 | 1.17 Mbps | 82.9 | 轻微变软 |
实测条件:60 秒、1920×1080、30fps、18 Mbps 源片。画面越复杂,同样码率下画质越差。
视频太长,20 MB 一定不够。10 分钟的视频分到 20 MB,视频码率只有 0.25 Mbps 左右,任何编码器都救不回来。要么剪短,要么当文件发。工具会用 VMAF 告诉你有没有越过这条线。
几个实用建议
- 先剪再压。少 10 秒,剩下的每一秒都能多分到比特。
- 默认用 H.264。兼容性最好,老安卓机也能放。
- 不要卡着 20.00 MB。工具故意留 1%–3% 余量,19.45 MB 比 20.01 MB 安全。
- 多个视频一起压。
npx halfsize a.mp4 b.mp4 --for wechat。 - 不想用命令行:
npx halfsize --web,拖拽即可,仍然不上传。
常见问题
微信视频上限是多少?
聊天里发送视频为 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 以下明显变差。