當您使用基於瀏覽器、在本機執行的 WebM 工具來壓縮影片時,您的影片從未離開過您的裝置 — 每一個輸入位元組、解碼後的影格,以及輸出位元組都從頭到尾留在當前的分頁中。解碼、Canvas 繪圖、MediaRecorder 編碼,以及最終的下載,全部都在您自己機器的瀏覽器中完成。沒有任何檔案被上傳到伺服器,沒有任何縮圖被傳送出去,沒有任何名稱或編解碼器中繼資料被回報到任何地方,也不會有任何結果被遠端儲存。該頁面在本機播放來源影片,將每個顯示的影格繪製到一個有範圍限制的 Canvas 中,使用目前瀏覽器提供的 WebM 編解碼器錄製該 Canvas 串流,然後提供產生的檔案供下載。只有當您點擊下載時,才會有任何東西離開該分頁,即使如此,它也是直接從您的裝置傳送到您的下載資料夾。本文所介紹的本機工具的發行商 Lizely 明確聲明,它不會接收任何影片、任何縮圖、任何長度、任何檔案名稱、任何編解碼器,以及任何結果。這份合約正是真正的本機壓縮工具與一般線上服務之間的區別。

does the video leave my device when i use video compression
壓縮影片時,影片是否會離開您的裝置?

基於瀏覽器的影片壓縮如何保持在本機執行

本機壓縮依賴於三個瀏覽器 API,這些 API 已在 Chromium、Firefox 和 Safari 中提供,整個管線在單一分頁中執行,無需任何網路往返。首先,該頁面透過 URL.createObjectURL 呼叫讀取所選的檔案,這會產生一個暫存於記憶體中的參考,該參考永遠不會離開您的機器。其次,HTML5 video 元素會即時播放來源影片,而瀏覽器內建的解碼器會將每個影格本機地提取到記憶體中。第三,該頁面呼叫 HTMLCanvasElement.captureStream() 從 Canvas 取得一個 MediaStream,然後將該串流交給設定為 WebM 的 MediaRecorder。關於 HTMLCanvasElement.captureStream() 的 MDN 參考文件說明了擷取端,而關於 MediaRecorder 的 MDN 參考文件則說明了錄製端。兩個 API 都描述了此工具所依賴的相同合約。

由於來源是以即時速度播放,編碼也是即時的 — 因此一段兩分鐘的來源大約需要兩分鐘來錄製,而不是在遠少於即時的時間內完成。該頁面以預設的節奏繪製每個影格,從來源播放時間追蹤進度,並在來源結束時停止串流軌道。替換檔案、更改預設、取消,或關閉分頁,都會使進行中的工作失效,並撤銷暫存的 Object URL。這些步驟都不會接觸任何遠端端點。該分頁執行的唯一網路活動,就是載入驅動壓縮工具本身的靜態 HTML、CSS 和 JavaScript。

在影片不離開裝置的情況下壓縮影片

以下的精確步驟使用了 Video Compressor,這是一個遵循上述合約的本機 WebM 重新編碼器。每一步都會讓檔案留在您的分頁中,直到您點擊最終的下載。

  1. 在目前的桌面瀏覽器中開啟 Video Compressor,並等待頁面完成載入。
  2. 選擇一個瀏覽器可解碼的影片,大小不超過 500 MiB、長度不超過五分鐘、解碼後的尺寸不超過 3840 × 2160 像素。檔案可以命名為 MP4、WebM、MOV、M4V 或 Ogg,但是否能成功解碼仍取決於您瀏覽器中安裝的編解碼器。
  3. 選擇 Small 可將寬度上限設為 640 像素、影格率 24 fps;選擇 Balanced 可將寬度上限設為 1280 像素、影格率 30 fps;或選擇 Quality 可將寬度上限設為 1920 像素、影格率 30 fps。每個預設都會保留來源的長寬比,絕不放大來源,並將輸出尺寸向下捨入到偶數像素值。
  4. 按下開始按鈕,並在來源即時播放時保持分頁開啟。該頁面會將每個顯示的影格繪製到一個有範圍限制的 Canvas 中,並使用您瀏覽器支援的 WebM 編解碼器錄製該串流 — 優先嘗試 VP9,然後是 VP8,最後是一般性的 WebM。
  5. 錄製結束時,請檢視所顯示的輸出尺寸、輸入位元組數、輸出位元組數,以及帶正負號的百分比變化。該百分比僅根據這兩個實際的 Blob 大小計算,當輸出較大時,絕不會被標示為縮減。
  6. 點擊下載,將 WebM 儲存到您的下載資料夾,然後完整播放該檔案,以在刪除原始來源之前確認大小、長度、畫面和聲音。

如果結果不符合您的需求,請使用不同的預設重新執行,並自行比較位元組數。壓縮取決於內容,因此低動態的動畫可能會大幅縮小,而嘈雜的影像、顆粒或快速的攝影機晃動則可能產生大小相近甚至更大的檔案 — 此工具會誠實地回報這兩個數字,絕不會誇大節省量。

壓縮後工具回報的內容

錄製器停止後,該頁面會顯示關於此次執行的四個具體事實,這些事實是直接從記憶體中的物件讀取,而非估算的。輸出尺寸是實際寫入的向下捨入到偶數的像素大小。輸入位元組數是您所選檔案的原始 Blob 大小。輸出位元組數是剛錄製的 WebM 的 Blob 大小。帶正負號的百分比變化僅根據這兩個數字計算 — 例如,輸出為輸入大小三分之二的檔案會顯示負百分比,而增加了百分之十的輸出則會顯示正百分比。當檔案實際上變大時,該頁面絕不會宣稱縮減。如果您想深入了解如何在實際操作中解讀這些數字,Video Compressor Test Online: Inspect Real Results 這份逐步指南涵蓋了完整的比較執行過程,並附有測量得到的位元組數。

要求的位元速率是透過一個有界限的每像素位元數啟發式方法選擇,然後限制在 180 kbps 和 8 Mbps 之間。這個啟發式方法就是為何靜態的簡報投影片比快速的運動影片壓縮得更多,以及為何高動態的來源即使在 Small 預設下有時也會達到上限的原因。錄製後顯示的所有數值都不會被傳送到任何地方;它們只存在於當前的分頁中,並會在您替換檔案或關閉頁面時被清除。

三個預設實際上做了什麼

這些預設是透明的產品選擇,而不是對通用最佳值的聲稱。它們在三個公開的維度上有所不同:最大輸出寬度、目標影格率,以及驅動位元速率選擇的大致每像素位元數目標。下表概述了根據此工具合約,每個預設實際上做了什麼。

預設最大輸出寬度目標影格率位元速率通常落在哪裡
Small640 px24 fps最低,通常接近 180 kbps 的下限
Balanced1280 px30 fps中間範圍,介於兩個限制之間
Quality1920 px30 fps最高,在繁忙的影像上可能接近 8 Mbps 的上限

所有三個預設都會保留來源的長寬比,絕不放大來源,並將輸出尺寸向下捨入到偶數像素值,以便編碼後的 WebM 能廣泛地與各種解碼器相容。其中沒有任何一個預設保證輸出會比輸入更小;錄製後顯示的位元組數才是唯一誠實的比較。當結果不符合您的需求時,請嘗試另一個預設,並在刪除原始檔案之前檢查下載的檔案。

線上壓縮工具何時會上傳您的檔案

許多自稱為線上影片壓縮器的網站實際上會將您的檔案上傳到遠端伺服器,在它們控制的 CPU 或 GPU 上進行轉碼,儲存一段時間的副本,然後傳送一個下載連結給您。當檔案較小且連線速度較快時,這種管線很方便,但它具有與本機工具不同的隱私特性:檔案會經過它們的基礎設施,存放在它們的儲存空間中,並受其保留政策的約束。有些服務會在一小時內自動刪除,有些則會將母帶保留數天,還有少數服務讓刪除時間變得不透明。如果某個網站要求您將一個 2 GB 的影片拖曳到瀏覽器中,然後在您的連線保持忙碌的同時等待處理訊息,那麼這些位元組几乎可以確定正在離開您的裝置。

一個快速辨別差異的方法是開啟瀏覽器的開發者工具,在壓縮過程中觀察網路面板,並尋找任何其請求內文或回應中帶有您影片資料的請求。本機工具通常只會顯示頁面本身的靜態資源請求。這個測試足以區分真正的基於瀏覽器的重新編碼,以及薄薄一層上傳後轉換的外殼。如果您特別想要一條永遠不上傳的注重隱私的路徑,Compress a Video to 50 MB Without Uploading It 指南會引導您使用相同的本機工具,並以一個具體的大小目標為出發點。

本機 WebM 重新編碼的誠實限制

當您需要歸檔用的母帶、確定性的跨平台輸出、兩段式速率控制、固定關鍵影格間隔、字幕保留,或精確的編解碼器設定檔時,本機壓縮無法取代維護良好的桌面編碼器。本文件所介紹的工具明確不會對音量進行正規化、不會混音軌道、不會修復損壞的媒體,也不會保留字幕、章節、附件、旋轉標籤、色彩中繼資料或 HDR 訊號。WebM 是唯一的輸出容器,因為 MediaRecorder 對瀏覽器產生 MP4 的支援在各家瀏覽器之間仍然不一致;錄製器會根據目前瀏覽器所回報的支援,依序嘗試 VP9、然後 VP8,最後是一般性的 WebM — 因此即使是相同的來源和相同的預設,在 Chrome、Firefox 和 Safari 之間也可能產生略有不同的輸出。

輸入受到四個保護記憶體和 Canvas 配置的硬性限制:檔案大小上限 500 MiB、長度上限五分鐘、任一邊的像素上限 4096 像素,以及解碼後尺寸上限 3840 × 2160 像素。只有當瀏覽器透過來源元素的 captureStream 公開了可擷取的音訊軌道時,才會包含音訊;而當來源包含音訊時,在即時處理過程中會以可聽見的方式播放。無效的檔案、不支援的解碼器、超過限制的長度、超過限制的影格、缺少 Canvas 串流,或無法使用的 WebM 錄製器,都會產生明確的錯誤,且不會提供下載。這些限制都不會改變隱私方面的答案:每一種失敗模式都會將檔案留在您的裝置上。請保留原始檔案,直到您已完整播放輸出的檔案,並確認大小、長度、畫面、聲音和相容性都符合目標用途的要求。