← 所有文章

我们如何打造一款不上传你视频的浏览器视频压缩器

2026-05-20

搜索"在线压缩视频",你会看到几十个看起来免费、干净、方便的服务。把文件拖进去,等 30 秒,下载更小的版本。简单。

但这些服务几乎没有一个会明说:你的视频上传到了他们的服务器。也许几小时后会删除。也许员工不会看。也许备份里不会留副本。也许

我们做 ToolKoala 视频压缩器 就是想把这些"也许"去掉。你的视频文件从不离开你的笔记本。不传到我们的服务器,也不传到任何人的服务器。压缩完全在你浏览器的 CPU 上跑。这篇文章讲它怎么工作、有哪些代价、以及你自己怎么验证。

关键技术:FFmpeg 编译到 WebAssembly

FFmpeg 是为大多数专业视频工具提供动力的开源视频编码器 — 从 YouTube 的入库流水线到你最喜欢的 Mac 应用。它有 20 多年历史,能处理你能想到的任何编解码器、容器和色彩空间。

几年前,FFmpeg 团队把整个项目编译成了 WebAssembly — 一种能在任何现代浏览器中以接近原生速度运行的可移植二进制格式。结果就是 @ffmpeg/ffmpeg — 一个加载约 30 MB WebAssembly 模块、把 FFmpeg 命令行接口暴露给网页的 JavaScript 包。

当你访问我们的视频压缩器并拖入一个 MP4 时,发生了这些事:

  1. 浏览器一次性下载 FFmpeg WebAssembly 模块(约 30 MB)。这个文件会被缓存,之后访问就跳过。
  2. 模块加载进 Web Worker — 一个无法访问 DOM 的后台线程。
  3. 我们通过 writeFile() 把你的视频文件交给 worker。这是内存中的复制操作。不涉及网络。
  4. Worker 运行 ffmpeg -i input.mp4 -c:v libx264 -crf 28 output.mp4 — 在你的 CPU 上重新编码视频。
  5. Worker 把压缩后的字节交回。我们把它包成 Blob,生成下载链接,结束。

整个过程中,你的视频从未通过网络传输。唯一的网络流量是 FFmpeg 引擎本身从公共 CDN 加载。

自己验证 — 10 秒搞定

不用相信我们。相信你浏览器的开发者工具。

  1. 在 Chrome 或 Firefox 打开 https://www.toolkoala.com/zh-CN/video-compress/。
  2. 打开 DevTools(按 F12,或右键 → 检查)。
  3. 切到 Network(网络)面板。点垃圾桶图标清空已有请求。
  4. 把一个视频文件拖到页面上。

你会看到网络请求触发 — 但只有 FFmpeg 引擎文件(ffmpeg-core.jsffmpeg-core.wasm,来自 unpkg.com)。你的视频文件对外请求。压缩全过程中网络面板都是安静的,你可以一直开着看。

这才是真正有意义的隐私声明:一种你 10 秒内就能验证、不需要相信发布者的隐私声明。

为什么不是所有在线压缩工具都这么做?

三个原因。

速度。服务端压缩用专用硬件 — 通常是 GPU 或专门的 H.264 ASIC 编码器。它们能在 10 秒内压完一个 1 分钟视频。WebAssembly 在你笔记本的 CPU 上单线程跑。同样的任务我们要花 1-3 分钟。对大多数个人场景这没问题。但对批处理 100 个视频,就不行。

文件大小。浏览器内存有上限。我们把单次上传限制在 1 GB。服务端工具能处理几百 GB。如果你要压一个 4K 归档,用桌面端的 HandBrake。

工程成本。服务端是每个框架都教的标准架构。浏览器端要理解 Web Worker、WebAssembly 内存模型、blob URL,以及 type: "module"type: "classic" worker 的微妙差异(我们自己就踩过:module worker 不支持 importScripts,所以必须加载 ffmpeg-core 的 ESM 版本,不是 UMD 版本)。这是一条更麻烦的路,除非隐私是真正的产品需求,大多数团队不会选。

我们牺牲了什么

诚实比营销更重要。这里是服务端压缩能做、而我们做不到的事:

  • GPU 加速。没有 -hwaccel cuda-c:v h264_nvenc。纯 CPU。
  • 硬件加速的 H.265/AV1。浏览器 WebAssembly 支持软件 H.264。新编解码器能跑但更慢。
  • 超过 1 GB 的文件。浏览器内存上限是 2-4 GB(取决于平台)。输入超过 1 GB,分配就开始失败。
  • 稳定的移动端体验。手机在处理长视频时会内存不足或大幅变慢。我们推荐桌面端使用。

如果这些对你重要,请用 HandBrake(桌面端,免费,开源)。

我们还是做了,因为

两个真实场景说服了我们:

  1. 邮件附件。人们经常碰到 Gmail 25 MB 附件上限。需要在发送前把 60 MB 的视频缩小。他们不想去想"这个压缩服务是不是会卖缩略图"这种问题。

  2. 敏感素材。保险理赔、医疗记录、家庭瞬间、草稿工作产品。任何你不愿意上传到陌生域名的东西。"这个网站安全吗?"这种心智负担,在答案是可证明的"你的文件不会传到任何地方"时,就消失了。

如果你属于这两类用户之一,试试 ToolKoala 视频压缩器。拖文件、选画质、等一分钟、下载。不需注册、无水印、无邮件、无上传。

致谢

这一切之所以可能,离不开 FFmpeg 团队 20 年的工作、把它包装到浏览器的 @ffmpeg/ffmpeg 维护者们,以及让字节级可移植性变得无聊到能直接出货的 WebAssembly 规范制定者。

我们是一个小团队,在做一整套浏览器端的隐私工具。PDF、图片、文字、视频 — 每次原则相同:你的文件不需要离开你的设备,软件也能用。