線上影片尺寸調整工具的測試會在當前的瀏覽器分頁中執行,絕對不會在遠端伺服器上運作:檔案會在本地端讀取,影格會繪製到經過調整大小的畫布上,畫布串流會以 WebM 格式錄製,並透過一個可撤銷的 blob URL 來建立下載連結。這個尺寸調整過程是真實的重新編碼,而不是僅僅修改中繼資料中的尺寸,這表示輸出檔案在大小、位元速率、影格時間軸、色彩中繼資料以及音訊配置上都可能與來源不同。輸出格式永遠都是 WebM,因為這個工具仰賴瀏覽器內建的 VP9 或 VP8 影片編碼器,避免使用任何龐大的媒體相依套件或伺服器端處理。輸出尺寸會向下取整數至偶數像素值,這是因為常見的瀏覽器編碼器在編解碼器安全的偶數尺寸下表現更為穩定,因此輸入為奇數時每邊會損失一個像素。由於尺寸調整是即時進行的,一段五分鐘的來源通常需要大約五分鐘才能完成。

一次測試能同時告訴你三件事:這個工具是否能接受你的來源、所要求的幾何設定是否如你預期運作,以及下載下來的 WebM 能否在你關心的播放器中播放。影片尺寸調整工具頁面正是為這樣的循環所設計 — 挑一段短的本地影片,設定目標寬度與高度,選擇一種模式,然後看看輸出結果,整個過程都不必離開瀏覽器分頁,也不必把來源檔案移出你的裝置。

video resizer test online
線上影片尺寸調整工具測試:驗證本地端結果

線上測試影片尺寸調整工具實際上能看出什麼

「線上測試」這個說法常被寬鬆地使用,而三種不同的行為經常被混為一談。真正的本地測試會從你的裝置讀取檔案、在瀏覽器中解碼、將每個影格以新尺寸繪製到畫布上,然後產生一個你可以下載的全新 WebM 檔案。僅修改中繼資料的測試會重寫容器中的解析度欄位而不動到像素,輸出結果常常無法播放,或以錯誤的尺寸播放。伺服器測試則會將來源上傳到遠端機器,在那裡進行處理,再把結果傳回來 — 這雖然可行,但在處理過程中會把檔案移出你的裝置。

影片尺寸調整工具明確屬於第一類。解碼、尺寸調整與錄製全部由瀏覽器執行,來源位元組從未離開過裝置。最終的 WebM 具有有限的播放時間,透過一個經過審核的共用 Matroska 時長寫入器寫入,讓播放器不會將其回報為無限串流。若想更深入了解本地端管線實際做了什麼,請參閱影片尺寸調整工具解析:本地尺寸調整的運作方式,其中以更詳細的方式說明了相同的流程。

影片尺寸調整工具在你按下「調整大小」之前會做什麼

在你選擇一個支援的本地影片後,頁面所做的第一件事就是讀取該檔案的中繼資料。瀏覽器會公開來源的尺寸、時長,以及基本的編解碼器資訊。

接著工具會驗證你輸入的兩個數字。每個尺寸都必須是介於 2 到 1920 像素之間的整數,且來源本身必須符合檔案與編解碼器的限制:最大 500 MiB、時長不超過五分鐘、每邊不超過 4096 像素,總面積不超過 3840 × 2160 像素。若超出任何一項限制,工具會明確地顯示失敗,而不是產出誤導性的下載檔案。不支援的編解碼器、無效的尺寸、過多的來源中繼資料、空白的錄製輸出,以及瀏覽器功能不足等情況,都會以畫面上的錯誤訊息呈現,而不是產生損毀的檔案。八組獨立的幾何測試案例涵蓋了橫向、直向、方形、同比例、外框、拉伸以及奇數尺寸等情況,這正是該工具能在各種形狀下保持一致的明顯錯誤行為的方式。

如何線上測試影片尺寸調整工具

以下是一次乾淨的本地測試的實際操作步驟。

  1. 開啟影片尺寸調整工具並點選檔案選擇器。從你的裝置中挑選一個簡短的 MP4、WebM、MOV、M4V 或 Ogg 影片片段。支援的清單固定為這五種容器,因為瀏覽器必須能夠解碼來源。
  2. 等待頁面完成讀取檔案的中繼資料。當瀏覽器準備就緒後,寬度、高度與時長會顯示在來源標籤旁邊,而尺寸調整控制項在這之後才會啟用。
  3. 輸入你想要的寬度與高度上限。每個數值必須是介於 2 到 1920 像素之間的整數。在 Fit(適配)模式下,目標會被視為外框;而在 Stretch(拉伸)模式下,則會被視為精確尺寸。
  4. 選擇一種模式。Fit 模式會在框內保留來源的長寬比,永遠不會裁切。Stretch 模式則會獨立使用你所要求的寬度與高度,可能會刻意讓畫面失真。
  5. 按下「調整影片大小」並保持分頁開啟。瀏覽器會解碼來源、將影格繪製到經過調整大小的畫布上、以最高每秒 30 個影格擷取該畫布、附加瀏覽器公開的任何音軌,然後透過 MediaRecorder 以 VP9 或 VP8 WebM 格式錄製結果。底層的 canvas captureStream 行為已記錄在 MDN — Canvas captureStream 參考文件中。
  6. 錄製完成後,下載該 WebM 檔案。其播放時間已修補,檔案會回報為有限的長度,下載 URL 也是本地的且可撤銷。在你的播放器中開啟該檔案,確認尺寸與長寬比行為符合你的要求。

Fit 與 Stretch:兩種不同的測試方式

Fit 與 Stretch 回答的是不同的問題,而同時執行這兩者是確認工具是否如它所宣稱般運作的最快方式。Fit 回答的是外框問題:套用兩個縮放比例中較小的那一個,保留來源的長寬比,且永遠不會裁切畫面。輸出會是能放入所要求寬度與高度之內、並保留原始比例的最大尺寸。Stretch 回答的是精確尺寸問題:獨立使用所要求的寬度與高度,這表示輸出完全是你所輸入的尺寸,即使畫面因此被壓縮或拉伸。

行為Fit 模式Stretch 模式
長寬比保留自來源依據所要求的寬度與高度
是否可能失真是,當來源比例與目標不同時
裁切永遠不會永遠不會
輸出尺寸外框內的最大適配尺寸完全等於所要求的尺寸
奇數輸入的處理向下取整至偶數值向下取整至偶數值
典型用途在不產生失真的前提下將影片限制在最大尺寸對齊固定的像素目標,例如平台的預設規格

兩種模式都會將奇數尺寸向下取整至偶數像素值,這是因為底層編碼器在編解碼器安全的偶數尺寸下更為可靠。這個取整行為與模式選擇無關。

影響測試結果的限制

有幾項限制會默默地決定一項測試能否執行,在開始之前值得先針對你的來源加以確認。

限制數值
支援的輸入容器MP4、WebM、MOV、M4V、Ogg
來源最大大小500 MiB
來源最大時長5 分鐘
來源單邊最大像素4096 像素
來源最大面積3840 × 2160 像素
寬度與高度範圍每個介於 2 到 1920 像素
尺寸取整奇數值減少一個像素
輸出容器WebM(VP9 或 VP8)
擷取影格率最高 30 fps
處理位置僅限當前瀏覽器分頁

這些數字直接來自該工具已公開的行為。任何超出這些範圍的情況都會以畫面上的錯誤訊息呈現,而不是產生檔案,這對測試來說是較安全的失敗模式。輸入清單也清楚地說明了這個工具不會接受的格式:MKV、AVI、FLV 及其他瀏覽器無法解碼的容器會在一開始就遭到拒絕,而不是假裝能處理。

WebM 輸出包含什麼(以及不包含什麼)

下載下來的檔案是真實的重新編碼,這表示有幾項特性很容易被誤認為是 bug。品質、位元速率、影格時間軸、音訊配置、色彩中繼資料以及檔案大小都可能與來源不同,因為畫布重繪與 MediaRecorder 管線會從頭重建這些數值。音訊僅限於瀏覽器從來源公開的內容,多軌與字幕則不會被保留。

輸出確實帶有播放器會遵守的有限時長,因為該檔案是透過一個經過審核的共用 Matroska 時長寫入器來完成。擷取率最高為每秒 30 個影格,因此 60 fps 的來源會變成 30 fps 的 WebM。編碼器也會將輸出尺寸取整至偶數像素值,因此奇數目標每邊會少一個像素。這些行為都不代表檔案損毀 — 它們是即時瀏覽器重新編碼的可預期樣貌,而且在每個符合輸入限制的支援來源上都會呈現相同的結果。

何時桌面編碼器是更好的測試對象

瀏覽器管線快速且注重隱私,但在某些情況下它並不能取代完整的編碼器:影格精準交付、超過五分鐘限制的長片、必須輸出 MP4、需要色彩管理的工作流程,以及精確的位元速率控制,都不在影片尺寸調整工具的設計範圍內。它不會放大細節、不會去除黑邊、不會裁切主體、不會保留字幕或多軌、不會繞過 DRM,也不保證專業級的母帶品質。請僅使用你擁有或有權編輯的媒體,當上述限制攸關成果時,請改用 FFmpeg、HandBrake 或付費編碼器。

如果你正在權衡各種選項,影片裁切後檢查結果:在本地端驗證輸出對此有詳細說明。