how do i repeat the same result when i resize video
如何重複影片縮放並取得相同的結果

「可重複的影片縮放」代表什麼

可重複的影片縮放代表每當同一個來源檔案搭配同一組目標參數時,都能產生相同的輸出尺寸與相同的視覺幾何。當縮放在瀏覽器中本地執行,並鎖定像素尺寸、固定的外觀模式(適配或延展),以及對編碼器安全的偶數像素值時,重新調整大小的步驟本身就具有決定性。同一個 影片縮放工具 在每次執行時會重複使用相同的 canvas 繪製路徑與相同的 MediaRecorder 擷取流程,因此您設定的幾何就是您取回的幾何。每次執行之間的差異通常來自來源檔案、編碼器選擇或變動的設定,而不是來自幾何計算。縮放工具內建八個獨立的幾何測試案例,涵蓋橫向、直向、正方形、同比例、邊界框、延展以及奇數尺寸的情境,而這些測試案例正是相同的數值輸入能在多次執行中產生相同數值輸出的原因。這種一致性正是讓縮放成為可驗證操作,而非憑感覺猜測的關鍵。

哪些輸入會鎖定結果

有四個輸入會控制瀏覽器端影片縮放的決定性。首先,來源檔案在每次執行之間必須完全相同——相同的編解碼器、相同的像素尺寸、相同的時長。其次,您輸入的最大寬度與高度必須是相同的整數。第三,外觀模式必須保持不變,因為適配與延展即使在相同的輸入下也會產生不同的輸出幾何。第四,編碼器路徑必須保持一致;由於縮放工具是在當前瀏覽器分頁中本地執行,編碼器採用的是瀏覽器內建的 VP9 或 VP8 WebM 組態,而非伺服器端的選擇。讓這四個輸入全部保持固定,正是讓您能比較兩個輸出並信任任何差異來自來源而非工具的原因。

該工具透過解碼每一幀、將其繪製到重新調整大小的 canvas 上(最高 30 幀每秒)、透過 HTMLCanvasElement.captureStream API 擷取該 canvas,並透過 MediaRecorder 進行錄製。只要這些 API 在您的瀏覽器工作階段中行為一致,幾何處理就能重複。

為何偶數像素尺寸對可重複性很重要

當輸出尺寸都是偶數時,瀏覽器 WebM 編碼器的行為會更加穩定。縮放工具會將奇數值向下捨入一個像素,確保在擷取 canvas 之前寬度與高度永遠是偶數。每個維度必須是 2 到 1920 像素之間的整數,這代表最小的合法輸出是 2×2,而非 1×1 或任何奇數值,而奇數輸入會在編碼開始前被限制為偶數像素。例如,一個 16:9 的來源在 1280×720,輸入到 800×600 的適配邊界框中,會產生 min(800/1280, 600/720) = min(0.625, 0.833…) = 0.625 的縮放比例,得到 1280 × 0.625 = 800 乘以 720 × 0.625 = 450 的輸出——已經是偶數,無需捨入。如果相同的來源搭配的目標會落在奇數像素上,則奇數值會減少一個,以落在對編碼器安全的偶數值上。這種強制的捨入正是為何兩次執行相同輸入會回傳相同尺寸的原因之一。

這條規則同樣能防止奇數尺寸的情境在多次執行之間產生漂移。奇數尺寸情境中的測試案例正是這類輸入:若沒有偶數像素限制,瀏覽器編碼器在不同工作階段之間可能會落在略微不同的輸出寬度或高度上。

適配模式與延展模式會產生不同的輸出

您選擇的模式決定了來源的外觀比例能否在縮放後保留下來。適配模式將輸入的寬度與高度視為邊界框,並套用兩者中較小的縮放比例,因此輸出比例永遠會與來源比例一致,且畫面永遠不會被裁切。延展模式則會獨立使用所要求的寬度與高度,因此即使來源比例不符,輸出仍會是那些精確的尺寸——這可能會刻意地使畫面變形。即使來源檔案與數值目標完全相同,只要切換模式,每次執行的輸出幾何就會不同。

執行的面向適配模式輸出延展模式輸出
同比例來源精確的邊界框尺寸,無捨入衝突精確要求的寬度與高度
不同比例來源最大邊界框適配,保留來源比例精確的寬度與高度,畫面可能變形
奇數像素目標尺寸縮減為偶數像素兩個尺寸都限制為偶數像素
非常小的目標縮放比例逼近零,來源仍適配邊界框比例落差越大,失真越大

如果您希望可決定的縮放在多次執行之間不發生變化,請選擇一次模式並保持不變。在多次執行之間切換模式,是相同來源的兩次縮放產生不同輸出幾何最常見的原因。

在本地縮放影片並比對相同的結果

  1. 在瀏覽器分頁中開啟影片縮放工具,並選擇一個支援的本地檔案:MP4、WebM、MOV、M4V 或 Ogg。請等待瀏覽器讀取完中繼資料後再進行下一步。
  2. 輸入您想要的最大寬度與高度。範圍為 2 到 1920 像素的整數。請注意,來源檔案大小不得超過 500 MiB、長度不得超過五分鐘、每邊不得超過 4096 像素,以及面積不得超過 3840×2160 像素——超出這些限制的值會讓工具明顯失敗,而不會產生誤導性的檔案。
  3. 選擇適配以在邊界框內保留來源外觀比例,或選擇延展以強制使用精確的寬度與高度。該選擇在此次執行中即為定案;在編碼開始後切換模式會產生不同的結果。
  4. 選擇 Resize video。在即時編碼期間保持分頁開啟。瀏覽器會解碼來源、以最高 30 幀每秒將幀繪製到重新調整大小的 canvas 上、擷取該 canvas,並使用支援的 VP9 或 VP8 組態將輸出錄製為 WebM。
  5. 當錄製完成時,下載 WebM 結果。有限的時長會由共用且經過稽核的 Matroska 時長寫入器修補,讓檔案能在標準播放器中完整播放。
  6. 若要重複相同的結果,請使用相同的來源、相同的尺寸與相同的模式在相同的瀏覽器中執行。輸出尺寸會在多次執行之間一致。品質、位元率、幀時間、音訊配置、色彩中繼資料與檔案大小仍可能與來源不同,並且因為這是即時重新編碼而非僅修改中繼資料的尺寸變更,可能會在多次執行之間略有差異。

如需逐步驗證兩個輸出是否相符的完整流程,驗證工作流程 會更詳細地涵蓋相同的測試案例。

在多次執行中驗證相同的結果

確認縮放可重複最快速的方法,是重新執行完全相同的輸入並比較產生的幾何。輸出尺寸可從播放器或任何容器檢查工具中讀取——若相同的適配或延展輸入在兩次都落在相同的寬度與高度,幾何處理就是可重現的。比較檔案大小不是可靠的檢查方式,因為 WebM 編碼器在相同的幾何下可能會產生略微不同的位元組數。在幀層級比較像素內容是更強的檢查方式,但這取決於您手邊是否有幀擷取工具與像素差異工具。

縮放工具本身的八個幾何測試案例——橫向、直向、正方形、同比例、邊界框、延展與奇數尺寸——的存在,正是為了讓這種可重複性能在不挑選特定素材的情況下進行測試。若某個測試案例在今天與明天使用相同輸入產生不同的輸出,原因幾乎總是來源檔案不同或瀏覽器工作階段不同,而非縮放計算本身。

哪些因素會限制可重複的執行

少數輸入會悄悄地讓可重複的執行停擺。不支援的來源編解碼器、含有過多中繼資料的來源,以及瀏覽器功能落差,都會以明顯失敗呈現,而不是悄悄地下載——但僅勉強在限制範圍內的來源仍可能產生在多次執行之間漂移的結果。空的錄製輸出也會被拒絕而不是下載。

限制門檻超出時會發生什麼
來源檔案大小500 MiB工具明顯失敗,而不會產生檔案
來源時長5 分鐘同上——不會產生誤導性的部分輸出
來源每邊寬度4096 像素同上
來源面積3840×2160 像素同上
輸出尺寸範圍2 到 1920 像素,偶數,整數奇數輸入會被減少一個像素,成為對編碼器安全的偶數值
幀率最高 30 fps 擷取更高的來源幀率會被捨棄

縮放工具也明確說明它不做哪些事。它不會放大細節、移除黑邊、裁切主體、保留字幕或多音軌、繞過 DRM,或承諾專業母帶處理。它也是本地的即時重新編碼,而非僅修改中繼資料的尺寸變更,因此處理時間大約等於影片播放的時間。對於需要幀精準度交付、MP4 輸出、色彩管理工作流程、精確位元率控制,或長度超過五分鐘的素材,合約建議改用專用的桌面編碼器。

本地瀏覽器縮放不適用的情境

當目標是在不上傳來源的情況下取得具有已知尺寸的可重複 WebM 時,本地瀏覽器縮放是合適的工具。當輸出必須是 MP4、當來源含有需要在編碼後保留的字幕或多軌音訊、當幀率必須超過 30 fps、當位元率必須符合特定目標,或當需要色彩管理中繼資料時,它就不適合。在這些情況下,縮放工具的合約建議使用專用的桌面編碼器,而不是強迫即時瀏覽器管線表現得像母帶處理工具。

在其限制範圍內使用時,縮放步驟具有足夠的決定性,可以重複。讓來源、尺寸、模式與瀏覽器工作階段保持固定,正是讓相同的結果每次都出現的原因。

如需更深入的說明,請參閱 縮放影片時遇到問題該如何排除?。