Video Compressor 會將可在瀏覽器解碼的影片重新編碼為 WebM 檔,整個過程都在目前的瀏覽器分頁內完成,並提供三種有限制的輸出選項——Small 上限寬度 640 px、24 fps,Balanced 上限寬度 1280 px、30 fps,以及 Quality 上限寬度 1920 px、30 fps——同時將來源限制在 500 MiB、5 分鐘以內,以及 3840 × 2160 像素的上限內。這個工具會將每個顯示的影格繪製到 Canvas 上,使用瀏覽器的 MediaRecorder 錄製該 Canvas 串流,並回報實際的輸入位元組、輸出位元組,以及帶正負號的百分比變化,讓你在下載前可以確認壓縮是否真的縮小了檔案。由於編碼器是即時觀察正在播放的來源,處理一段兩分鐘的剪輯大約需要兩分鐘,而非瞬間完成,而且若瀏覽器公開了可擷取的音軌,音訊會在本地播放。這讓「我要如何使用影片壓縮」這個問題的實際答案變成一個簡短的本地工作流程:選擇檔案、選擇預設、讓它完整播放、確認回報的位元組變化,並在完整播放完產生的 WebM 之後才下載。

how do i use video compression
我要如何逐步使用影片壓縮

Video Compressor 如何在本地運作

四個階段——解碼、Canvas 繪製、MediaRecorder 編碼與下載——全部都在目前分頁內執行。瀏覽器的解碼器會讀取來源檔案,每個播放的影格都會被繪製到一個不透明的 Canvas 上,其大小為預設的最大寬度與來源的長寬比(為求更廣泛的編解碼器相容性,會向下取整至偶數像素值),然後 Canvas 串流會被 MediaRecorder 以瀏覽器首先回報的 WebM 編解碼器擷取——依序為 VP9、VP8,再來是通用 WebM,如 MDN MediaRecorder 參考文件 中所述。只有在 HTMLMediaElement captureStream 透過來源媒體元素公開音軌時,才會附加可擷取的音軌。

這些階段受到嚴格的限制所約束,以確保記憶體、Canvas 配置與即時工作的可預測性。在編碼器啟動之前,輸入會依下列每一項檢查進行驗證:具有副檔名或 MIME 型別、正整數位元組大小上限 500 MiB、解碼後的時長大於零且最多 300 秒、每邊影格最多 4096 px,以及解碼後的區域最多 3840 × 2160 px。任何超出這些限制的內容都會產生錯誤且不會下載——絕不會悄悄截斷,也不會提供不完整的檔案讓你儲存。Matroska 容器會以解析後的 Segment Info 與 TimestampScale 完成最終化,並插入一個 Duration 浮點數,讓下載的 WebM 能在標準播放器中以有限的時長播放。

比較三種預設

這三種預設是透明的產品選擇,而非宣稱它們是通用最佳解。每一種都限制輸出寬度、選擇目標影格速率,並讓有界限的每像素位元數啟發式方法來選擇所要求的錄製位元速率,限制範圍從 180 kbps 到 8 Mbps。長寬比會被保留,來源絕不會被放大,輸出尺寸會向下取整至偶數值。

預設最大輸出寬度目標影格速率典型用途
Small640 px24 fps草稿、預覽、低頻寬分享
Balanced1280 px30 fps通用交付、社群媒體上傳
Quality1920 px30 fps螢幕播放、封存檢視

如果你需要協助判斷哪一種預設適合特定用途,如何為影片壓縮選擇正確的方法 這份指南會以「用途優先」的觀點,逐一介紹相同的預設。

如何使用 Video Compressor 逐步操作

  1. 選擇一個可在瀏覽器解碼的影片,其大小不超過 500 MiB、時長不超過 5 分鐘,且解碼後的區域不超過 3840 × 2160 像素。檔案副檔名可以是 MP4、WebM、MOV、M4V 或 Ogg,但實際解碼仍取決於目前瀏覽器中安裝的編解碼器——有效的副檔名無法讓不支援的編解碼器變得可解碼。
  2. 根據你的用途選擇 Small、Balanced 或 Quality,然後開始壓縮。請在來源以即時速度播放時保持分頁開啟,因為 MediaRecorder 是觀察 Canvas 串流實際播放的狀況,而非提前處理影格。頁面會根據來源播放時間追蹤進度,並在錄製後停止串流軌道。
  3. 當來源結束時,請查看回報的輸入位元組、輸出位元組與帶正負號的百分比變化,以確認結果確實縮小了。嘈雜、高動態或已經高效率壓縮的來源可能會產生大小相同或更大的檔案,而此工具不會將其重新標示為縮減——顯示的百分比僅根據兩個實際 Blob 大小計算。
  4. 下載 WebM,使用支援所錄製編解碼器的播放器搭配聲音完整播放檔案,並且只有在畫面、音訊、時長與相容性都符合你的用途時,才刪除原始檔案。選擇新檔案、更改預設、取消或離開頁面,都會使目前的工作失效並釋出暫時性的物件 URL。

開啟 Video Compressor 頁面,依序執行上述步驟;本文的其餘部分將說明回報內容的意義、為何結果會有所不同,以及何時該選擇不同的工具。

為什麼結果可能反而變大

壓縮取決於內容,因此相同的預設在不同的影片上會產生截然不同的輸出大小。簡單的動畫或靜態的對談鏡頭可能會大幅縮小,因為相鄰影格相似,且每像素位元數的啟發式方法可以要求較低的位元速率。相同的預設在含有顆粒、攝影機晃動、快速動作、細緻紋理,或來源已經被高效壓縮的影片上,則可能產生大小相同或更大的檔案。顯示的百分比一律根據兩個實際 Blob 大小計算——絕非根據行銷估計——因此這個數字反映的是磁碟上實際發生的情況,而非工具試圖達成的目標。

如果結果不如預期,請嘗試另一種預設,而非重複執行相同的預設。Small 要求較小的寬度與較低的影格速率;Quality 則在 1920 px 寬度下要求更多位元數。作為粗略的方向,低動態內容預期會有最大的降幅,而嘈雜、高細節的影片則預期降幅最小(或甚至增大)——確切的數字來自於在你的實際檔案上執行此工具。若想更深入了解這些數字如何計算與回報,Video Compressor 準確度指南 詳細說明了位元組變化的計算方式。

輸出不會保留哪些內容

WebM 是唯一的輸出容器,因為 MediaRecorder 對瀏覽器產生的 MP4 支援在各瀏覽器間仍不一致,且頁面會選擇瀏覽器首先回報的 WebM MIME 型別。因此有幾項輸入特性不會被保留:字幕、章節與容器附加檔案;旋轉標記、色彩中繼資料與 HDR 訊號;音量標準化、音軌混音或音訊修復。本工具不會進行音量標準化、混音、依據認證標準移除中繼資料、修復損毀的媒體,或保留所有容器特性。

只有在瀏覽器透過 HTMLMediaElement captureStream 公開可擷取音軌時,才會包含音訊,因此如果來源在處理過程中可以聽到聲音,你應該能聽到——但請勿假設靜音分頁後擷取的音軌仍保持完整。如有需要,請使用裝置音量,並確認下載的檔案能完整地搭配聲音播放。瀏覽器支援度與編解碼器組合各有不同,這也是為什麼相同的預設與來源在不同的瀏覽器上可能會產生略有不同的輸出,而錄製器會根據目前瀏覽器支援的項目,依序嘗試 VP9、VP8,再來是通用 WebM。

何時該改用桌面編碼器

若需要封存母片、專業交付規格、精確的編解碼器設定檔、兩階段速率控制、固定關鍵影格間隔、字幕保留,或可重現的跨平台輸出,請使用維護良好的桌面編碼器,例如搭配審核過的指令使用 FFmpeg。瀏覽器流程非常適合在本地快速、無需上傳的壓縮,且目標用途接受 WebM 並能在刪除來源前驗證結果;但當你需要可重現、依規格驅動的輸出時,它無法取代命令列編碼器。

如果瓶頸在於形狀而非大小,有幾個相關工具仍可在同一個本地瀏覽器工作流程中使用,且無需上傳任何內容:Video Resizer 會輸出有限大小的精確或保留長寬比的 WebM,Video Cropper 會將可在瀏覽器解碼的影片裁切為精確的框內像素矩形,而 Video Trimmer 則會剪取一段有限範圍。每個工具都會回報實際產生的結果,讓你在刪除原始檔案前能做出判斷。