← 所有文章

我們如何打造一款不上傳你影片的瀏覽器影片壓縮器

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-TW/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、圖片、文字、影片 — 每次原則相同:你的檔案不需要離開你的裝置,軟體也能用。