halfsize / 本地压缩
压缩视频,不用上传
所有“免费在线视频压缩”本质上都是把文件传到别人的服务器。如果视频里是身份证、还没发布的产品演示、 孩子的演出录像,为了省五分钟把它传上去并不划算。halfsize 在本机调用 FFmpeg:不上传、不要账号、没有次数限制。
$ npx halfsize 客户演示.mp4 --to 20mb
halfsize 0.1.8
客户演示.mp4
136 MB 60s 1920x1080 30.00 fps h264
target 20.0 MB
plan H.264 1280x720 2.46 Mbps audio 128 kbps 2-pass
scale 1920x1080 → 1280x720
output 客户演示.20mb.mp4
measuring quality done in 8s
136 MB → 19.45 MB 小了 7.0 倍 比目标小 2.7%
VMAF 88.3 SSIM 0.971 轻微变软
文件没有离开这台电脑。
“本地”具体指什么
| 环节 | 在线压缩站 | halfsize |
|---|---|---|
| 你的文件 | 上传到服务器 | 留在本机磁盘 |
| 账号 | 通常要注册 | 不需要 |
| 次数 | 每天 2–3 个,之后付费 | 无限制 |
| 水印 | 免费版有 | 没有 |
| 画质说明 | 一个“高清”标签 | 实测 VMAF 和 SSIM |
| 断网可用 | 不行 | 装好后可以 |
| 价格 | 订阅制 | MIT,免费 |
唯一一次联网是第一次执行 npx halfsize:npm 下载安装包,安装包再下载对应平台的静态 FFmpeg。
之后编码全部在本机完成。你可以直接断网再跑一次同样的命令来验证。
不想敲命令?网页界面也是本地的
网页由本机进程在 127.0.0.1 上提供,不是托管网站。页面和视频都不会离开你的电脑。
$ npx halfsize --web
halfsize web UI on http://127.0.0.1:4174
拖入文件、选目标大小,得到体积和画质分数。全程本地。
为什么不直接手写 FFmpeg 命令?
当然可以,halfsize 本身就是 FFmpeg 外面的一层薄封装。麻烦的是算术:给定目标体积,要扣掉音频和容器开销 反推视频码率,还要判断“降到 720p”和“保持 1080p 但码率减半”哪个更好看,最后确认文件真的没超标、 画质损失了多少。这些就是工具替你做的部分。
$ npx halfsize 视频.mp4 --to 20mb --dry-run
plan H.264 1280x720 2.46 Mbps audio 128 kbps 2-pass → ~19.4 MB
实测画质,不是宣传语
60 秒 1080p30、源码率 18 Mbps,在笔记本上本地编码:
| 目标 | 输出 | 分辨率 | VMAF | 观感 |
|---|---|---|---|---|
| 20 MB | 19.45 MB | 1280×720 | 88.3 | 轻微变软 |
| 16 MB | 15.59 MB | 960×540 | 84.8 | 轻微变软 |
| 10 MB | 9.77 MB | 960×540 | 82.9 | 轻微变软 |
| 5 MB | 4.93 MB | 640×360 | 72.0 | 明显损失 |
不上传不等于无损。 10 分钟的视频压到 20 MB 只有 0.25 Mbps,换什么工具都会糊。在意画质就先剪短,再压。
适合这些场景
- 不能传到第三方服务器的客户演示、内部录屏
- 硬性限制 20 MB 的政务、学校、招聘网站
- 禁止上传、只能本地处理的内网电脑
- 几十个文件要批量压,网页版一个个传不现实
常见问题
会偷偷联网吗?
没有统计、没有遥测、没有更新检查。源码在 GitHub,可以自己审计,也可以在防火墙后面运行。
需要装 Node.js 吗?
需要 Node.js 18 或更高版本。FFmpeg 已经内置,不用自己编译或配置。
支持哪些系统?
Windows 10/11、macOS、Linux,命令完全一样。
能写进脚本或 CI 吗?
可以。--json 输出机器可读结果,--dry-run 只打印方案不编码。
网页界面是云服务吗?
不是。npx halfsize --web 只在 127.0.0.1 起一个本机服务,外网访问不到。