在本機裁切影片時,當你輸入的矩形與實際想要的範圍不符、矩形超出原始影格的邊界,或瀏覽器在重新錄製過程中悄悄捨棄了音訊、時長、字幕或旋轉詮釋資料,就會產生看起來錯誤的結果。幾乎所有的修正方式都相同:在 Video Cropper 中重新開啟來源、確認解碼後的尺寸、以完全位於每個影格內的非負整數像素重新輸入 X、Y、寬度和高度、保持分頁開啟再執行一次 Crop video,並在刪除原始檔之前完整檢視新的 WebM 檔案。

從搜尋關鍵字本身就能看出,讀者已經嘗試過一次裁切並對結果不滿意,因此本篇文章將「修正」視為刻意以修正後的座標重新執行,而非第一次操作的教學。Video Cropper 會將來源的固定矩形區域錄製到 Canvas,並將該串流儲存為 WebM;若結果看起來有誤,問題出在矩形、來源或瀏覽器的編碼器,以下解法會分別針對這三者進行處理。

how do i fix a result that looks wrong after i use video crop
修正看起來錯誤的裁切影片結果

「看起來錯誤」通常代表什麼

看起來錯誤的裁切結果可歸納為幾種可辨識的失敗模式,辨別你遇到的是哪一種,能縮小修正範圍。

  • 顯示的區域錯誤。WebM 開啟時顯示的並非你想要的畫面,例如畫面中央主體被替換為左上角。這代表 X 和 Y 數值太小,或是寬度和高度偏離了你所測量的影格內區域。
  • 黑邊或影格偏移。輸出畫面看起來有位移、加邊或被黑暗框住。這通常代表矩形至少有一邊超出原始影格,使得 X+寬度 或 Y+高度 超出解碼邊界,請求因此被拒絕。
  • 沒有聲音。WebM 可以播放但無聲音。瀏覽器未透過媒體擷取為這個特定來源公開可擷取的音軌,因此沒有音訊附加到 Canvas 串流。
  • 時長錯誤。輸出只能播放幾秒鐘,或目的地播放器回報時長為零或缺失。串流式 MediaRecorder 輸出可能省略有限的容器時長,播放器因此退回為即時模式。
  • 畫面模糊、有方塊感或過大。裁切結果看起來偏柔、像素化,或遠大於預期。編碼器根據裁切區域計算位元率,快速動態、來源顆粒或編解碼器的選擇都會改變磁碟上的檔案大小。

以精確像素座標修正裁切

依序執行下列步驟。這是該工具的官方操作順序,遵循這些步驟能排除最常造成錯誤結果的變因。

  1. 從本機磁碟選擇一個瀏覽器可解碼的影片(MP4、WebM、MOV、M4V 或 Ogg),並等待解碼後的來源尺寸顯示在工具中。在這些數值載入前請勿輸入座標,因為後續所有檢查都依賴它們。
  2. 讀取回報的寬度和高度,然後以整數像素規劃一個完全落在其中的矩形。預設值已選取整個影格,因此請將這些數字作為上限。
  3. 輸入 X 和 Y 作為來源影格左上角的像素位移。X 使裁切向右移動;Y 使裁切向下移動。輸入寬度和高度作為裁切的水平和垂直範圍。每個數值必須是非裁切的非負整數像素,且寬度和高度必須各自至少兩個像素。
  4. 驗證兩項邊界檢查:X + 寬度 不得超過來源寬度,且 Y + 高度 不得超過來源高度。將寬度乘以高度並確認結果小於或等於 3840 × 2160 像素(8,294,400)。若任一檢查失敗,矩形會在不位移、不裁剪、不進位、不產生部分檔案的情況下被拒絕。
  5. 選擇 Crop video 並保持分頁開啟。該工具會在本機播放來源,僅以 30 fps 將所要求的區域繪製到等大的不透明 Canvas,並將該 Canvas 串流錄製為 WebM。一分鐘的來源大約需要一分鐘才能完成。
  6. 下載出現時,儲存 WebM,然後在目的地播放器中從頭到尾播放一遍。在刪除任何檔案之前檢查畫面、音訊和時長。

舉例來說,假設來源解碼為 1920 × 1080,而你想要一個向右位移 320 像素、向下位移 180 像素的置中 1280 × 720 視窗。輸入 X = 320、Y = 180、寬度 = 1280、高度 = 720。邊界總和為 X + 寬度 = 1600(小於 1920,有效)以及 Y + 高度 = 900(小於 1080,有效)。輸出面積為 1280 × 720 = 921,600 像素,遠低於 3840 × 2160 的上限。在按下 Crop video 之前,這個單一計算值得親手驗證一次;若三個數字中任何一個不符,請求會被拒絕且不會產生任何檔案。

造成裁切失敗或結果錯誤的限制

Video Cropper 強制執行一組數值限制。每項限制都可能單獨把一次「修正」變成另一個錯誤的結果,因此在重新輸入座標時請將其放在眼前。

參數要求數值重要性
X 位移非負整數像素將裁切移至影格零點的左側,會使矩形部分超出來源。
Y 位移非負整數像素垂直軸上的相同概念。
寬度至少 2 像素寬度低於 2 像素會被拒絕。
高度至少 2 像素垂直軸上的相同概念。
X + 寬度≤ 來源寬度超過右邊界,矩形無效並被拒絕。
Y + 高度≤ 來源高度超過下邊界,矩形無效並被拒絕。
輸出面積≤ 3840 × 2160 像素超過此值,即便來源更大,Canvas 也會被拒絕。
來源邊長≤ 4096 像素更高或更寬的來源會在共用影片安全預算處被封鎖。
來源時長> 0 且 ≤ 5 分鐘時長為零或更長的來源會在開始時被拒絕。
來源檔案大小≤ 500 MiB較大的檔案會在明確的正向檔案預算處失敗。

若修正嘗試靜默失敗,在斷定工具出問題之前,請先回頭檢視此表格。多數看起來錯誤的裁切結果並非編碼器的錯誤,而是單一差一的座標或遺漏的邊界檢查。

音訊、時長,以及裁切後無法保留的內容

裁切可能看起來完美,但因音訊或時長行為出乎意料而感覺不對。事先了解工具會保留哪些屬性,能讓「修正」更快速。

僅當瀏覽器透過 DOM 元素的媒體擷取公開可擷取的音軌時,音訊才會附加到 Canvas 串流。支援性因瀏覽器和來源編解碼器而異,來源在即時處理過程中可能仍會發出聲音。若輸出無聲,可能是來源本身未公開音軌,而非裁切造成。若音訊很重要,請先以短樣本測試。

時長會在錄製後進行修補。該工具使用與 Video Compressor 共享、通過標準測試的 WebM 時長寫入器:它會解析 Segment Info 與 TimestampScale,並以 timestamp-scale tick 為單位插入 big-endian 的 Matroska Duration 值,遵循 Matroska 容器格式。輸出必須保持非空,且能以所要求的尺寸解碼;若任一檢查失敗,錄製的 Blob 會被捨棄。若你的目的地播放器仍顯示時長為零或缺失,代表檔案本身正常,但播放器在修補後的時長寫入之前讀取了 WebM;請改用符合標準的播放器開啟以確認。

裁切刻意不保留的內容:字幕、章節、附件、旋轉標籤、HDR 訊號、色彩詮釋資料,以及許多其他容器功能。它同樣不會保留輸入的所有屬性。它會改變可見的影格區域,並非以時間剪輯、調整大小、僅壓縮、遮蔽、模糊或移除物件的工具。請將每次輸出視為一個新檔案並確認其相容性,而非視為對來源的保留屬性編輯。

在刪除來源之前驗證修正後的裁切

WebM 下載完成並不代表修正結束。產品合約已明確說明:在完整檢視整個輸出之前,請保留原始檔。請每次執行以下簡短的驗證流程。

  • 將 WebM 從第一幀播放到最後一幀,並確認矩形在每個場景中都符合你的預期,而不僅是第一幀。每幀都會套用同一固定矩形,因此若有平移場景,可能會暴露出你在開頭未察覺的差一錯誤。
  • 確認時長。若播放器回報以秒為單位的有限時長,表示 Matroska Duration 修補已生效;若回報為即時或零,代表播放器在修補前讀取了串流,你可能需要更換播放器。
  • 確認音訊。完整聆聽;請記得,若瀏覽器未公開音軌,來源在處理過程中可能有聲音,但輸出為靜音。
  • 透過將 WebM 匯入你實際打算使用的目的地播放器、編輯器或平台來確認相容性。能在你的瀏覽器中開啟的檔案,並不保證能在所有地方開啟。
  • 只有在這四項檢查全部通過後,才能刪除來源。

若經過此流程後輸出仍看起來有誤,最具成效的下一步是檢視裁切前的檢查清單,讓下一次的修正能一次到位;避免裁切影片時出錯指南以檢查清單形式涵蓋了相同的座標計算,並與上述限制表自然搭配使用。

延伸閱讀:在瀏覽器中開始使用影片裁切。