比較影片壓縮方式的意思,是在相同條件下將同一個來源檔案分別以各種方法處理,再比較實際輸出的位元組、解析度與播放結果,而不是相信宣傳的壓縮率。最可靠的本地比較方式,是使用一款瀏覽器工具,以三個具名預設重新編碼單一檔案,讓輸入保持不變,而寬度、影格率和位元率目標則一次只變動一個變數。Video Compressor正是這樣運作:它播放瀏覽器可解碼的來源,把每一個顯示出來的影格繪製到有邊界的 Canvas 上,然後在你即時觀看來源播放的同時,把該 Canvas 錄製成 WebM 檔。由於解碼、繪製與錄製全部都在目前的分頁中進行,你可以不需上傳任何東西,就用 Small、Balanced 和 Quality 三個預設重新處理同一個來源,再讀取回報的輸出解析度與帶正負號的位元組變化,判斷哪個預設才真正適合你的內容。這讓預設比較成為可重複的量測,而不是憑宣傳文案猜測。

本地瀏覽器壓縮器中「方式」的意義
影片壓縮的一種「方式」,是指套用於單一輸入的輸出寬度、影格率與目標位元率的組合。三種具名方式可讓你分離每個軸的影響。僅降低寬度可測試解析度的成本;固定寬度並降低影格率可測試時間細節的成本;降低每像素位元數啟發法則可測試位元率的成本。在多次執行間維持來源、容器與編碼器不變,代表位元組或可見品質的任何差異都來自所選的方式,而非來自不同的編解碼器、不同的檔案或不同的機器。正是這個結構,讓比較結果能對你的影片內容說出有意義的結論,而不是在描述工具本身。
每個預設實際變更的內容
這三個預設是透明的產品選擇,並非宣稱有通用最佳值,每一個都設定了特定的寬度上限、目標影格率,以及驅動錄製器位元率的每像素位元數啟發法則。預設限制的是輸出寬度而非高度,因為會保留來源長寬比,而且工具絕不會放大較小的來源。輸出解析度也會向下取整到偶數像素值,以提升編解碼器相容性,因此一個 1279 像素的來源在 Balanced 下會落在寬度 1278,而非 1280。錄製器位元率會限制在 180 kbps 到 8 Mbps 之間,避免極低動態的來源萎縮成極小的檔案,也避免極高動態的來源超出瀏覽器可即時維持的上限。
| Preset | Maximum output width | Target frame rate | Bitrate behavior |
|---|---|---|---|
| Small | 640 px | 24 fps | Bounded bits-per-pixel heuristic, clamped 180 kbps to 8 Mbps |
| Balanced | 1280 px | 30 fps | Bounded bits-per-pixel heuristic, clamped 180 kbps to 8 Mbps |
| Quality | 1920 px | 30 fps | Bounded bits-per-pixel heuristic, clamped 180 kbps to 8 Mbps |
預設就只有這三個;沒有自訂滑桿、沒有手動 CRF 輸入,也沒有逐欄位覆寫。輸出容器永遠是 WebM,因為瀏覽器 MediaRecorder 對所產生的 MP4 支援度仍不一致;錄製器會依目前瀏覽器回報的支援情況,先嘗試 VP9,再嘗試 VP8,最後才是通用的 WebM,因此同一預設套用於同一來源,在不同瀏覽器間可能產生略為不同的位元組數。
如何在本地比較壓縮方式
- 挑選一個具代表性的來源,須為瀏覽器可解碼、大小不超過 500 MiB、長度不超過五分鐘,解碼後區域不超過 3840 × 2160 像素。
- 在瀏覽器分頁中開啟 Video Compressor 並選取檔案;頁面會驗證副檔名或 MIME、須為正整數位元組大小且上限 500 MiB、解碼後時長大於零且至多 300 秒、每邊至多 4096 像素,以及解碼後區域至多 3840 × 2160。
- 先選擇 Small 並開始壓縮,在來源即時播放期間保持分頁開啟。編碼會即時進行,因為 MediaRecorder 會在來源播放的同時觀察 Canvas 串流,因此兩分鐘的來源大約需要兩分鐘才能完成,而非瞬間結束。
- 工作結束後,記錄回報的輸出解析度與帶正負號的位元組變化,將 WebM 另存為 run-small,並在刪除任何東西之前,先完整播放一次下載的檔案。
- 再次選擇同一個來源,選取 Balanced,啟動新的執行,將 WebM 另存為 run-balanced,並播放來與 Small 結果比較動態流暢度與細節。
- 第三次選擇同一個來源,選取 Quality,將 WebM 另存為 run-quality,並以相同方式播放。
- 依據實際位元組大小、輸出解析度,以及你對可見瑕疵的筆記來比較這三個檔案,再保留其輸出符合目的地在尺寸、畫面與音效方面需求的預設。只有在已完整播放過保留的檔案後,才能丟棄另外兩個。
為何同一預設會在不同來源間產生不同的位元組數
壓縮取決於內容,而工具使用的有界每像素位元數啟發法則是依據解析度與影格率挑選錄製器位元率,並非依據內容。低動態的動畫可能會變得遠比來源小,因為編碼器能有效重複使用先前的影格;帶有雜訊、顆粒、晃動與快速變化細節的影片則帶有更高的熵,較難重複使用,因此同一預設可能維持差不多的每像素位元數,卻仍產生大得多的檔案。一個已以現代編解碼器有效編碼的來源,也可能產生大小相近甚至更大的輸出,因為透過 Canvas 在固定目標下重新編碼,無法回收先前編碼器已省下的空間。顯示的百分比只根據兩個實際 Blob 大小計算,工具絕不會把較大的檔案標示為縮減。當結果不符合你的需求時,請改用其他預設,並在刪除原始檔之前先檢視下載的檔案。
解讀結果:位元組、解析度與百分比
來源播放結束後,工具會回報輸出解析度、輸入與輸出位元組數,以及量測得到的百分比變化,然後提供下載產生的檔案。負百分比表示 WebM 比來源小,正百分比表示比來源大,零則表示兩個 Blob 恰好相同。由於報告是來自兩個實際 Blob 大小,變化的正負號就是頁面所能給出最誠實的摘要。你可以搭配一份檢視下載檔案用的檢查清單來延伸比較,讓每個預設的輸出都能依據解析度、時長、畫面、音效與目的地相容性來評斷,而非僅憑大小。
瀏覽器限制與該改用 FFmpeg 的時機
只有在瀏覽器透過 HTMLMediaElement captureStream 公開可擷取的音軌時,才會包含音訊;音訊支援依瀏覽器與來源編解碼器而異,因此請在下載的檔案中同時驗證畫面與音效。本工具不會標準化音量、不會混音、不會依據認證標準移除中繼資料、不會修復損毀的媒體,也不會保留字幕、章節、附件、旋轉標記、色彩中繼資料、HDR 訊號或每一項容器功能;當發生問題時,MediaRecorder 會產生錯誤,而非靜默地產出截斷的檔案。對於歸檔母檔、專業交付規格、嚴格的編解碼器設定檔、兩階段速率控制、固定關鍵影格間隔、字幕保留,或可決定性的跨平台輸出,請使用維護良好的桌面編碼器,例如搭配審核過指令的 FFmpeg。W3C MediaStream Recording 規格與 MDN 的MediaRecorder 參考資料說明了本頁所依賴的同一組瀏覽器 API。
延伸閱讀:Video Compression: How to Know If You Actually Need It.