在瀏覽器分頁中裁切影片,可能會在五個不同的環節失敗:座標驗證、來源檔案解碼、即時錄製、WebM 容器組裝,以及中繼資料保留。一個看似成功的裁切操作,仍可能產生一個沒有有限時長的 WebM、遺失所有字幕軌、瀏覽器透過媒體擷取不會輸出的音訊,或在裁切區域上觸犯 3840 × 2160 像素的上限。要預測哪裡會出錯,最快的方式是依序閱讀失敗介面:工具在錄製前會檢查什麼、瀏覽器能解碼什麼、即時處理需要多久、WebM 錄製器會輸出什麼,以及裁切操作明確不會保留哪些內容。由於來源在錄製期間是在本機播放,任何分頁重新整理、導覽或切換至背景,都可能讓串流中途斷裂並產生不完整的下載。了解這個鏈結,能讓你在按下 Video Cropper 的「Crop video」(裁切影片) 動作前,先避開最常見的失敗模式。

what can go wrong when i use video crop
使用 Video Crop 進行裁切時可能出錯的事項:失敗地圖

為何基於瀏覽器的裁切會改變失敗介面

大多數公開的影片裁切指南,都是在介紹桌面編輯器、伺服器端處理器或上傳管線。基於瀏覽器的裁切工具,會接觸到不同的失敗介面,因為整個管線(解碼、Canvas 繪製、MediaRecorder 擷取、容器修補)都是在目前分頁中,透過 HTML Canvas drawImage 來執行。沒有伺服器來回,但也沒有超出瀏覽器所暴露之外的錯誤復原機制。在桌面應用程式中會以非零退出代碼呈現的失敗,在這裡可能以不完整的 WebM blob、未設定的時長,或無聲的音訊遺失等方式出現。依序閱讀失敗介面(輸入檢查、解碼、即時錄製、容器寫入),能將模糊的「哪裡出錯」轉化為你能鎖定的特定層級。

在錄製前就會中止裁切的座標錯誤

裁切會以一個固定矩形套用至每一幀,當矩形無法對齊時,工具不會自動平移、裁剪或捨入。每個座標都會以未經處理的完整像素來解析,這意味著多餘的空白、半像素值,或前綴負號,都會讓矩形驗證失敗,而不會產生不完整的檔案。X 與 Y 是相對於來源幀左上角的偏移量;X 向右移動,Y 向下移動。寬度與高度必須各至少兩個像素,且 X 加上寬度、Y 加上高度都必須落在解碼後的來源矩形內。輸出區域不得超過 3840 × 2160 像素,即使來源更大也不行。

參數說明硬性限制
X相對於左上角的水平偏移非負整數;X + 寬度 ≤ 來源寬度
Y相對於左上角的垂直偏移非負整數;Y + 高度 ≤ 來源高度
寬度裁切的水平範圍整數 ≥ 2;X + 寬度 ≤ 來源寬度
高度裁切的垂直範圍整數 ≥ 2;Y + 高度 ≤ 來源高度
輸出區域結果的寬 × 高≤ 3840 × 2160 像素

無效的矩形會在錄製開始前就失敗。如果表單接受了數字,但動作按鈕沒有反應,失敗幾乎一定是落在這些限制上,而不是編解碼器的問題。請重新檢查這四個欄位,而不是檔案本身。

會悄悄阻擋解碼的來源檔案限制

裁切與其他本機影片工具共用同一套輸入安全預算。檔案僅依副檔名被接受;實際解碼則取決於目前的瀏覽器能讀取什麼。MP4、WebM、MOV、M4V 與 Ogg 等容器皆被允許,但接受的副檔名並不保證編解碼器支援,而工具只有在瀏覽器完成檔案解析後,才會暴露解碼後的尺寸。超過 500 MiB 的來源、解碼時長超過 5 分鐘的來源、邊長超過 4096 像素的來源,以及總面積超過 3840 × 2160 像素的來源,都會在預先階段就被拒絕。解碼時長為 0 的來源同樣會被拒絕。如果在你選擇檔案後尺寸遲遲未出現,最可能的原因是瀏覽器無法解碼該編解碼器,而不是矩形設定錯誤。

來源輸入預算限制
正向檔案大小≤ 500 MiB
解碼時長大於 0 且 ≤ 5 分鐘
來源邊長≤ 4096 像素
來源區域≤ 3840 × 2160 像素

輸出容器的風險:時長、音訊與 WebM 串流

錄製是以 30 fps 的 Canvas 串流即時進行,接著結果會交由瀏覽器回報的第一個 WebM 錄製器處理,依序可能是 VP9、VP8 與通用 WebM。由於 MediaRecorder 輸出本身可能省略有限的容器時長,工具會在錄製器之後,沿用 Video Compressor 所使用的、通過標準測試的同一套 WebM 時長修補機制:它會解析 Segment Info 與 TimestampScale,然後以大端序插入一個以時間戳刻度為單位的 Matroska Duration 值,讓檔案回報真實的播放長度。Matroska 容器格式定義了這些欄位,而產生的 WebM 必須維持非空,且能以所要求的尺寸解碼,否則結果將被拒絕。所要求的位元速率是依據 30 fps 下的裁切像素區域推導而來,並限制在 180 kbps 至 8 Mbps 之間;這是單一 pass 的瀏覽器設定,並非目標大小或視覺品質的保證。快速移動、雜訊、顆粒感、來源編解碼器,以及瀏覽器的編碼器,都可能讓實際大小往任一方向偏移。音訊僅在瀏覽器透過媒體擷取暴露可擷取音訊軌時才會被納入,這代表無聲的來源可能保持無聲,可擷取的音訊軌仍可能在不願意繞送的瀏覽器上被捨棄。來源在即時處理期間可能會實際播放出聲音,所以若不希望聲音洩漏到錄製內容中,請使用耳機或將分頁靜音。

影片裁切刻意不會保留的內容

裁切會改變可見的畫面區域;它並非依時間裁剪、調整大小、僅壓縮、遮蔽、模糊或移除物件的工具。字幕、章節、附件、旋轉標籤、HDR 訊號,以及大多數的顏色中繼資料,皆不會被保留。每一幀都會套用一個固定矩形,因此工具不會追蹤移動中的主體,也不會隨時間改變矩形。當多餘的邊緣在整段影片中都保持靜態,或當平台需要一個已知畫面時,這種單一矩形的行為是正確的選擇;但當主體會飄移,或不要的區域在影片過程中會擴大或縮小時,這就是不適合的選擇。請同時檢視聲音與畫面,並在刪除任何東西前,先在目的地播放器中確認時長、裁切、音訊與相容性。當裁切結果出錯而不是失敗時,通常的復原路徑在於修正輸出結果,而非重試相同的座標。

如何在本機以精確像素裁切影片

能避開上述大多數失敗模式的管線其實很短。挑選一個瀏覽器能解碼的檔案、計算落在每一幀內的座標、即時處理期間保持分頁開啟,接著下載並檢視 WebM,再刪除來源。

  1. 選擇一個瀏覽器可解碼的影片(MP4、WebM、MOV、M4V 或 Ogg),並等待其來源尺寸載入表單中。
  2. 輸入落在每個來源畫面內的整數 X、Y、寬度與高度值,其中寬度與高度各自至少 2 像素,且總面積在 3840 × 2160 像素以內。
  3. 選擇「Crop video」(裁切影片),在即時處理期間保持分頁開啟,並預期錄製時間大約與來源時長相當。
  4. 下載產生的 WebM,並在刪除原始檔案前,於目的地播放器中完整檢視時長、裁切、音訊與相容性。

在刪除來源前驗證 WebM

驗證是對抗無形中繼資料遺失的最後一道防線。請在實際會播放該檔案的播放器中開啟 WebM,並確認播放長度、裁切區域、音訊是否存在,以及沒有平台特有的意外情況,例如缺少有限的時長、被剝除的字幕軌或不支援的編解碼器。在完整檢視完輸出之前,請保留原始檔案。Object URL、計時器、錄製軌與播放作業,會在工具內發生替換、錯誤、過時完成或卸載時停止或釋放,因此離開分頁並不會洩漏資源,但因分頁關閉而產生的不完整檔案是無法復原的。請將來源視為唯一保證良好的複本,直到你已於目的地播放器中從頭到尾觀看完輸出為止。

如需更深入的探討,請參閱修正裁切影片後看起來有誤的結果。