技术原理 约 7 分钟
本地处理与上传处理:在线视频工具的两种架构
在线视频工具分两种架构:把文件上传到服务商服务器处理,或在浏览器内本地处理。前者需要排队、限制文件大小、素材会离开你的设备;后者把 FFmpeg 编译为 WebAssembly 在浏览器标签页内运行,文件从磁盘读入内存、处理后直接保存回磁盘,全程不经过任何服务器。
两种架构的数据流
上传式的完整链路是:文件 → 你的网络 → 服务商服务器 → 转码集群 → 生成下载链接。文件至少在服务商的磁盘上驻留整个处理周期,删除策略依赖服务商的自律与隐私条款。
本地式把处理引擎搬到浏览器里:ffmpeg.wasm 是编译为 WebAssembly 的 FFmpeg 完整功能集,在标签页的沙箱内运行。文件通过 File API 读入内存,处理结果通过 Blob 直接触发浏览器下载,网络只用于首次加载引擎文件。
本地处理的实际收益
- 隐私:素材不离开设备。含人脸、证件、未公开成片的文件,本地处理是更稳妥的前提
- 无队列:不与他人共享服务器资源,处理速度只取决于本机 CPU
- 无大小限额陷阱:上传式服务普遍对免费档设 100-500MB 上限,本地处理的瓶颈在设备内存而非平台配额
- 免费可持续:没有服务器转码成本,不需要用水印或付费墙覆盖开销
本地处理的边界
大文件受浏览器内存限制。WebAssembly 的堆内存上限约 2GB,本站对超过 1.5GB 的源文件直接阻断,超过 800MB 给出警告——这是为了保护浏览器标签页不崩溃。
速度依赖设备性能。转码速度约为实时播放的 1/4 到 1 倍(即 10 分钟的 1080p 视频需要 10 到 40 分钟),近十年的桌面 CPU 处理 1080p 没有压力;手机浏览器可用,但建议文件控制在 300MB 以内。
首次使用需要下载约 30MB 的引擎文件,之后由浏览器缓存复用。弱网环境下引擎加载会自动跳过预热,改为点击处理时才加载。
如何验证一个工具是否真的本地处理
断网测试:加载页面后断开网络,上传文件并开始处理。本地处理的工具可以照常完成,上传式的会立即报错。
DevTools 观察:打开开发者工具的 Network 面板再开始处理。真本地处理全程没有与文件体积同量级的上行流量,只有少量统计请求。