可以 — 你可以在自己的裝置上執行像 Video Resizer 這類瀏覽器型的調整大小工具,無需上傳檔案即可調整影片大小。整個工作流程都在目前的瀏覽器分頁中完成:JavaScript 解碼本地來源、將每個影格繪製到設定為新像素尺寸的 HTML canvas 上,再透過瀏覽器內建的 MediaRecorder 把 canvas 重新編碼成可下載的 WebM。因為位元組從未傳送到遠端端點,來源檔案可保持隱私、無需帳號即可使用,且在訊號不穩的網路環境下依然可用,這時上傳 500 MiB 是不切實際的。你確實需要一款提供 canvas captureStream 的目前桌面版瀏覽器(Chrome、Edge 或 Firefox),以及支援 WebM 的 MediaRecorder,這也是該工具在你開始前會偵測的項目。本指南涵蓋該工具接受的確切輸入、Fit 與 Stretch 模式的差異、你必須遵守的像素與尺寸限制,以及在什麼情況下你應該改用專用的桌面編碼器。

為何瀏覽器型調整大小無需上傳即可運作
現代瀏覽器內建與桌面編碼器相同的低階媒體基礎元件,因此本地調整大小不再需要安裝 FFmpeg 或付費使用伺服器端服務。當你用檔案選擇器挑選檔案時,File API 會把位元組交給你的分頁;不會有任何資料被 POST 到遠端端點。接著瀏覽器使用它播放影片時所用的同一個編解碼器管線解碼來源,把每個影格繪製到一個已調整為目標寬高的離屏 canvas 上,並使用 canvas captureStream 搭配 MediaRecorder,以最高 30 fps 的速率擷取並重新編碼 canvas。產生的 blob 會保留在記憶體中,直到你按下 Download,此時瀏覽器會提供一個可撤銷的本地 URL。
這個架構帶來三個值得了解的實際影響。第一,隱私是結構性的而非被承諾的:來源不會外洩,因為它從未離開 File 物件。第二,編碼即時執行,因此一段一分鐘的片段,在中階筆記型電腦上大致需要一分鐘才能完成。第三,輸出受限於瀏覽器 VP9 或 VP8 WebM 錄製器所能產生的格式,這就是為什麼不管你上傳什麼,輸出結果一律是 WebM。
如果你正在使用筆記型電腦,並想要特別針對該裝置的逐步解說,請參閱 Video Resizer on Laptop: Resize Locally in Your Browser。
調整大小實際上會改變你檔案中的什麼
這裡的調整大小是真正的重新編碼,而非中繼資料編輯。該工具並非僅僅重寫標頭來聲稱新的解析度;它會以要求的尺寸重新繪製每個影格,這代表像素資料確實被轉換,檔案也會依照新尺寸重建。會產生幾項副作用。
- 品質:編碼器的選擇由瀏覽器決定,因此輸出的銳利度、區塊雜訊與色彩響應取決於 MediaRecorder 選用的 VP9 或 VP8 設定,而非你的來源設定。
- 位元速率:該工具使用適合目標尺寸的有界位元速率;你無法精確指定每秒千位元的值。
- 影格時間:影格以最高 30 fps 的速率擷取,因此 60 fps 的來源會在時間上被降取樣。
- 音訊:瀏覽器從來源暴露的任何音軌都會被混流到輸出中;多聲道配置、環繞中繼資料與各軌的語言標記不會依原始內容保留。
- 字幕、章節、多個視訊軌與 DRM:不支援。來源必須未加密,並被視為單一視訊串流加上可用的音訊。
- 色彩中繼資料、EXIF、GPS 與附加資料:在 canvas 重新編碼過程中會被移除,因為 canvas 只帶有像素資料。
預期輸出的 WebM 看起來會合理,但不會與 FFmpeg、HandBrake 或商用 NLE 產出的母片檔完全相同。這個取捨就是在分頁中本地完成工作的代價。
如何在瀏覽器中本地調整影片大小
- 在目前的桌面版瀏覽器(例如 Chrome、Edge 或 Firefox)中開啟 Video Resizer 工具。
- 點擊檔案選擇器,挑選一個支援的本地影片:MP4、WebM、MOV、M4V 或 Ogg。請等待瀏覽器讀完中繼資料後再繼續。
- 以整數像素輸入最大寬度與最大高度。每個值必須是 2 到 1920 之間的整數。
- 選擇模式:Fit 會在邊界框內保留來源長寬比,Stretch 則使用你指定的確切寬高,即使畫面因此失真。
- 點擊 Resize video。在即時編碼期間,請保持分頁為焦點且分頁保持開啟。
- 錄製完成後,點擊 Download 儲存產生的 WebM。該檔案位於一個可撤銷的本地 URL,永遠不會接觸到伺服器。
如果你輸入的是奇數尺寸,該工具會把每個值向下取整到最接近的偶數像素,以確保常見的瀏覽器編碼器能穩定運作。例如,1281 × 721 的請求會在編碼開始前於內部變成 1280 × 720,而 801 × 501 則會變成 800 × 500。
Fit vs Stretch:該選擇哪種模式
| 比較面向 | Fit 模式 | Stretch 模式 |
|---|---|---|
| 長寬比 | 保留來源的長寬比 | 符合你輸入的確切數值,可能失真 |
| 輸入尺寸的意義 | 一個邊界框(最大寬 × 最大高) | 確切的目標尺寸 |
| 當來源比例不同時 | 以較短的一邊為基準縮放;邊界框其餘部分留空 | 壓縮或拉伸以填滿 |
| 裁切 | 絕不裁切 | 不會裁切,但可能出現明顯失真 |
| 最適用於 | 在強制規定比例的平台分享(YouTube、Instagram、TikTok) | 符合固定畫布,例如橫幅或背景底圖 |
Fit 模式的計算範例。假設你的來源是 1920 × 1080,而你要求 800 × 600。該工具會計算兩個縮放比例中較小者:min(800 ÷ 1920, 600 ÷ 1080) = min(0.4167, 0.5556) = 0.4167。將來源尺寸乘上該縮放比例會得到 1920 × 0.4167 ≈ 800,以及 1080 × 0.4167 ≈ 450,因此輸出為 800 × 450 — 一個在 800 × 600 邊界框內不經裁切的 16:9 影格。
Stretch 模式的計算範例。在相同來源下,若你要求確切的 800 × 600,該工具會直接寫入該尺寸。水平軸會從 1920 壓縮到 800 像素,垂直軸則從 1080 改為 600,因此畫面不再符合來源比例,看起來會水平壓縮。僅在目的地確實需要這些確切尺寸時,才使用 Stretch。
開始前需要知道的輸入與輸出限制
| 項目 | 限制 |
|---|---|
| 接受的來源格式 | MP4、WebM、MOV、M4V、Ogg(必須能在你的瀏覽器中解碼) |
| 來源檔案大小 | 最高 500 MiB |
| 來源長度 | 最高 5 分鐘 |
| 來源尺寸 | 任一邊不得超過 4096 px;總面積不得超過 3840 × 2160 |
| 目標寬度/高度輸入 | 2 到 1920 的整數 |
| 奇數目標尺寸 | 向下取整 1 像素,讓編碼器收到偶數值 |
| 輸出容器/編解碼器 | WebM 搭配 VP9 或 VP8 視訊,加上瀏覽器暴露的任何音訊 |
| 輸出影格率 | 從 canvas 擷取,最高 30 fps |
| 處理時間 | 大約即時(一段 1 分鐘的片段約需 1 分鐘) |
如果錄製器沒有產生資料、來源編解碼器不支援,或中繼資料超出上述限制,該工具會以明確失敗的方式顯示,而不是給你一個誤導性的下載。常見的觸發原因包括來自較舊 iPhone 的純 HEVC MOV 檔案、大於 500 MiB 的檔案,或任一邊超過 4096 像素的來源。八組獨立的幾何測試案例涵蓋橫向、直向、方形、同比例、邊界框、拉伸與奇數尺寸的情境,以確保在任何輸出提供之前,調整大小的路徑都已被實際執行過。
何時桌面編碼器是更好的選擇
瀏覽器型調整大小能涵蓋許多日常需求,但它無法取代完整的編碼器管線。如果你需要下列任何一項,請改用桌面工具。
- MP4 輸出。本地工具僅能輸出 WebM。如果你的下游系統需要 MP4 容器中的 H.264,你必須在其他地方轉檔。
- 精確的位元速率控制。MediaRecorder 會自行決定位元速率;你無法指定目標的每秒千位元數。
- 影格精準的交付。以 30 fps 進行的 canvas 擷取無法保證廣播或母片品質工作所需的取樣精確時間。
- 長片素材。五分鐘的上限與即時編碼的成本,使得任何超過短片段的內容都不切實際。
- 色彩管理工作流程。Rec. 709 / Rec. 2020 標記、HDR 中繼資料與 ICC 設定檔無法在 canvas 重新編碼中保留下來。
- 字幕、多個音軌或章節標記。僅保留瀏覽器暴露的音訊;其他項目皆會被移除。
- 受 DRM 保護的來源。加密內容無法解碼,必須在你所掌控的系統上從合法的母片進行轉檔。
若有上述任何情況,請在你擁有的機器上透過 FFmpeg、HandBrake 或商用 NLE 處理來源。當隱私、設定速度以及不需安裝任何軟體是首要考量時,請使用瀏覽器調整大小工具 — 而且僅限於你有權編輯的媒體。
如果你正在比較各種選項,Can I Trim Video Without Uploading a File? 對此有詳細說明。