當矩形、來源檔案以及瀏覽器解碼器在每次執行時都保持不變,裁切結果就能重現。影片裁切器會對每個解碼後的影格套用一組固定的 X/Y/寬度/高度矩形,僅把該區域以每秒 30 影格錄製到不透明的 Canvas,並將串流儲存為 WebM,因此餵入相同的來源檔案並使用相同的座標,每次都會在輸出中產生相同的裁切區域。還有兩個額外條件能讓執行結果真正可重複:矩形必須完全位於解碼後的來源內部,這樣才不會有任何影格被拒絕或位移;而且瀏覽器必須維持不變,因為 MediaRecorder 編碼器會採用瀏覽器優先回報的 WebM,其順序為 VP9、VP8,再來才是通用的 WebM。只要上述任何一個條件改變——來源檔案、座標、瀏覽器,或是當天瀏覽器偏好的編解碼器——即便可見的畫面看起來一模一樣,輸出位元組仍可能產生差異。錄製器的輸出也會以有限的 Matroska Duration 進行修補,讓檔案在每次執行時都能以穩定的時長播放,而這個寫入器與影片壓縮器管線共用,皆通過同一套標準測試。

how do i repeat the same result when i use video crop
重複裁切影片,每次都獲得相同的結果

為何固定矩形是可重複裁切的關鍵

可重複性取決於幾何設定,而非選項。裁切器從來源影格的左上角繪製一個矩形:X 將矩形向右移動,Y 將其向下移動,width 設定水平範圍,height 設定垂直範圍。所有數值都必須是未經修剪的非負整數像素,且 width 與 height 各自至少為 2 個像素。由於每個影格上的矩形完全相同,使用相同數值的第二次執行會繪製出完全相同的像素。如果你需要一個能追蹤移動主體的矩形,這個工具就不適合——它並不會追蹤人物或物件,而是在整段解碼後的時間內對每個影格套用相同的裁切。

座標也必須符合條件。X 加 width 以及 Y 加 height 的總和必須落在解碼後的來源範圍內,而且輸出區域不得超過 3840 × 2160 像素。任何無法通過這些檢查的矩形會直接被拒絕,而不會位移、裁剪、四捨五入或產生不完整的檔案。正是這種嚴格的拒絕機制,避免了重複執行時悄悄產生不同於上一次的裁切結果。

兩次執行之間必須保持一致的輸入

要重現相同的 WebM,代表有許多輸入必須鎖定。裁切器會在本地重新編碼來源,因此來源位元組的任何變動,或是瀏覽器解碼方式的任何變動,都可能改變錄製器寫入的位元組。下表列出必須維持不變的輸入,以及每個輸入實際控制了輸出中的哪些內容。

輸入保持不變時,所控制的項目
來源檔案(位元組、編解碼器、時長)瀏覽器可擷取的解碼後影格序列與音軌
X、Y、width、height 數值每個影格中繪製到 Canvas 的精確像素矩形
瀏覽器及版本MediaRecorder 編碼器的選擇(VP9、VP8 或通用 WebM)以及音訊擷取行為
處理過程中分頁保持開啟即時錄製的時長,因為約 1 分鐘的來源需要約 1 分鐘重新錄製
每次執行皆遵守來源限制裁切器可取得的相同解碼後尺寸與時長

使用不同的來源搭配相同的座標,並不會產生相同的畫面。相同的來源在不同的瀏覽器中雖然仍可繪製出相同的矩形,卻可能以不同的 WebM 編碼器錄製,即便裁切後的畫面看起來相同,仍會改變輸出位元組。

如何在瀏覽器中重複相同的裁切結果

  1. 選擇與上次相同的、瀏覽器可解碼的影片——例如 MP4、WebM、MOV、M4V 或 Ogg 檔案——並等待影片裁切器載入其解碼後的尺寸。
  2. 輸入與第一次執行相同的 X 與 Y 像素位移,以及相同的 width 與 height 數值。請保持數值未經修剪、為非負整數像素,width 與 height 至少為 2,且矩形完全位於解碼後的來源範圍內。
  3. 選擇裁切影片,並在即時處理過程中保持分頁開啟。關閉或將分頁移到背景執行,可能會中斷 MediaRecorder,導致產生不同的檔案。
  4. 錄製完成後,下載 WebM 並在刪除來源之前檢視完整的輸出。
  5. 在目的播放器中確認時長、裁切、音訊以及相容性。如果有任何細節不符,請先參考影片裁切器精確度指南中的驗證檢查清單,再假設是執行結果產生偏差。

使用相同的來源、相同的瀏覽器以及相同的座標重複上述步驟,就能產生可重複的 WebM 輸出。只要有任何變數不同——例如重新匯出的來源、不同的瀏覽器分頁設定檔、不同的瀏覽器,甚至只是座標四捨五入到最接近的像素——就會破壞可重複性的鏈條,而這通常就是「這次怎麼得到不同結果」實際發生的原因。

只更改一個數值時會產生什麼變化

單一變動可能讓畫面維持不變卻位移元組,也可能徹底改變畫面。裁切器會根據裁切後的像素面積,以每秒 30 影格為基準推算位元率,範圍限制在 180 kbps 到 8 Mbps 之間。矩形越小,請求的位元率越低;矩形越大,位元率越高,但最高不會超過上限。編碼器則是瀏覽器在 VP9、VP8 以及通用 WebM 之間優先回報的那一個,因此不同版本的瀏覽器可能選用不同的編解碼器,即便來源與矩形相同,也會產生不同的檔案。

音訊是另一個會變動的部分。當瀏覽器透過媒體擷取公開音軌時,工具會將其附加到 Canvas 串流;若未公開,輸出則為靜音。支援程度不一,來源在即時處理過程中可能會發出聲音,而且即使在同一瀏覽器上重複執行,仍可能根據該次工作階段瀏覽器公開音軌的方式而包含或省略音訊。字幕、章節、旋轉標籤、HDR 訊號、色彩中繼資料以及大多數容器特性都不會被保留,因此缺少這些欄位並不代表裁切有問題——這是工具本身的設計行為。即便矩形完全相同,快速動態、雜訊、顆粒、來源編解碼器以及瀏覽器編碼器都可能導致檔案大小與品質在每次執行時產生差異,這也是為何工具本身的說明文件會將其位元率設定描述為「公開揭露的單次瀏覽器設定」,而非對目標大小或視覺品質的保證。

會阻擋可重複執行的限制

有些輸入會讓裁切器在開始之前就停止執行,而失敗的執行並不算可重複的執行。這個工具與影片壓縮器共用同一套明確的影片安全預算,想要比較每次的結果,預算中的每一項限制都必須成立。

限制允許的最大值
來源檔案大小正向最大 500 MiB
解碼後時長大於零,且不超過 5 分鐘
來源邊長任一邊不得超過 4096 像素
來源面積不得超過 3840 × 2160
輸出矩形width 與 height 各自至少為 2;X + width 與 Y + height 必須落在來源範圍內
輸出面積不得超過 3840 × 2160

通過的副檔名並不保證獲得編解碼器支援,因為解碼能力取決於當下的瀏覽器。如果第二次執行在某個檔案上失敗,而第一次執行卻接受,差異幾乎必定來自當天瀏覽器的編解碼器支援,而非裁切器本身。

當設定相同卻仍產生不同檔案時

即便來源與矩形相同,當瀏覽器編碼器不同、來源在兩次執行間被重新編碼、矩形面積使位元率落在 180 kbps 到 8 Mbps 區間中的不同階梯,或是該工作階段公開音軌的方式不同時,兩個 WebM 仍可能產生不同的位元組。解決方法是以相同的瀏覽器版本搭配相同的來源位元組進行錄製,確認矩形完全相同,並在目的播放器中將兩個檔案從頭到尾播放過一次,再宣告兩者在任何實質意義上有所不同。裁切器並不承諾跨執行能達到逐位元組相等;它承諾的是在輸入相符時繪製出相同的區域——這就是可重複裁切的實務定義。

在每次執行的完整輸出都經過檢視之前,請保留原始來源。Object URL、計時器、錄製器音軌以及播放作業會在替換、錯誤、過期完成或卸載時由工具釋放,因此半途中斷的執行並不會將資源洩漏到後續執行中,悄悄改變下一次重複執行的結果。

延伸閱讀:使用影片裁切功能時如何排除問題。