影片裁切器的精確度,意味著輸出的下載檔案中,每一幀都符合所要求的 X、Y、寬度與高度像素矩形,播放時長與來源相同,並且只有在瀏覽器能擷取音訊時才包含音訊。此矩形會以相同座標套用於每一幀,因此無法追蹤移動中的主體 —— 裁切是一個固定的空間剪裁,並非基於時間的修剪。精確度也涵蓋輸出容器的完整性:一個無限串流而沒有有限時長的錄製檔,即使畫面看起來正確,也不算是一個完成的檔案。像 Video Cropper 這類本機瀏覽器工具,會以 30 fps 將要求的區域繪製到等大的 Canvas 上,將結果錄製為 WebM,並修補進有限的 Matroska Duration,這條流程從你按下裁切的那一刻開始,到檔案落到磁碟上的那一刻為止,定義了一次精確的裁切。任何在來源矩形與儲存檔案之間出現的偏移 —— 裁切位移、邊緣被裁掉、座標被四捨五入,或缺少時間戳 —— 都是精確度的損失,即使在快速預覽中畫面看起來仍可接受。

video cropper accuracy
video cropper accuracy

「精確度」在影片裁切器中的意義

影片裁切器的像素精確度奠基於五個獨立的特性,缺少任何一個,就會讓「還算可以」的預覽變成誤導性的檔案。第一個特性是座標精確度:儲存的區域必須完全位於使用者所要求的 X、Y、寬度與高度像素上,不得四捨五入、裁切或產生分數偏移。第二個是跨幀的矩形完整性:同一個矩形必須套用於每一個解碼後的幀,從第一幀到最後一幀,因此靜態邊緣在整個檔案中會保持靜態。第三個是時長完整性:輸出必須回報以 timestamp-scale ticks 表示的有限 Matroska Duration,而不是無限循環、持續播放的不受限錄製。第四個是音訊保真度:當瀏覽器能透過媒體擷取公開可擷取的音軌時,輸出應同時包含該音訊與畫面;若無法擷取,輸出應捨棄音訊而非製造無聲的雜訊。第五個是容器誠實性:字幕、章節、旋轉標籤、HDR 訊號與附件中繼資料可能無法保留,而精確的工具不會假裝它們已被保留。

這五個特性 —— 座標精確度、逐幀矩形穩定性、有限時長、可擷取音訊,以及已宣告的中繼資料損失 —— 定義了精確度。一個裁切器即使能產生漂亮的預覽,但如果四捨五入半像素、失去最後一秒、靜默地捨棄音訊,或儲存了一個無限制的串流,那它就是不精確的,即使畫面看起來沒問題。只用肉眼檢視畫面中央的審查者,正好會漏掉這些錯誤,這就是為什麼時長檢查、邊緣像素抽樣檢查,以及音訊抽樣檢查,都應納入任何精確度審查之中。

Video Cropper 如何達成像素級精確的結果

Video Cropper 串接了五個經過稽核的關卡,讓儲存的檔案符合所要求的矩形。第一個關卡是解碼尺寸關卡:工具會等待瀏覽器解碼來源並回報以整數像素表示的寬度與高度,因此 X、Y、寬度與高度的輸入永遠對應到真實的數值。第二個關卡是座標解析器:每一個輸入都會以未經修剪的整數像素讀取,X 與 Y 強制為非負值,寬度與高度至少兩個像素,且矩形必須整個位於解碼後的來源之內。無效的矩形會直接失敗,不會位移、裁切、四捨五入或產生部分檔案,因此不精確的要求無法洩漏到輸出之中。

第三個關卡是 Canvas 繪製步驟。工具會將所要求的來源矩形繪製到大小完全等於裁切尺寸的不透明 Canvas 上,以 30 fps 進行,依據 WHATWG HTML Canvas drawImage 規範,這表示不進行重採樣、不縮放,也不產生次像素定位。第四個關卡是 MediaRecorder 步驟:工具會根據裁切後的像素面積,請求一個有限範圍的影像位元率,上限從 180 kbps 到 8 Mbps,接著向瀏覽器依序要求 VP9、VP8 與通用 WebM 中第一個支援的編解碼器。只有在瀏覽器透過媒體擷取公開可擷取音軌時,才會附加音訊。第五個關卡是時長寫入器:因為串流式 MediaRecorder 輸出可能省略有限的容器時長,工具會從產生的 WebM 中解析 Segment Info 與 TimestampScale,並以大端序插入以 timestamp-scale ticks 表示的 Matroska Duration,遵循 Matroska Media Container Format 中所記錄的結構。在檔案提供下載之前,結果必須保持非空白,並能以所要求的尺寸解碼。

如何以像素級精確度裁切影片

  1. 開啟 Video Cropper 並選擇瀏覽器可解碼的來源 —— MP4、WebM、MOV、M4V 或 Ogg,然後等待解碼後的寬度與高度載入。預設選項會選取整個畫面。
  2. 讀取解碼後的尺寸,然後從來源左上角以整數像素為單位輸入 X 與 Y,並將寬度與高度設定為你想要的精確矩形。X 向右移動,Y 向下移動,寬度控制水平範圍,高度控制垂直範圍;寬度與高度都必須至少兩個像素,且 X 加寬度加 Y 加高度必須全部落在來源範圍之內。輸出區域不得超過 3840 × 2160 像素。
  3. 選擇「裁切影片」,並在即時處理期間保持分頁開啟。處理過程會在本機播放來源並重新錄製矩形,因此一分鐘的來源大約需要一分鐘。在下載出現之前,請勿切換分頁或關閉視窗。
  4. 下載 WebM 並在目的地播放器中檢視後,再刪除原始檔。確認時長與來源相符、裁切位於所要求的座標上、邊緣不會溢出,並且在瀏覽器擷取到音軌時音訊能正常播放。

如果輸入被拒絕,請修正座標後再重試 —— 工具會採取封閉式失敗,而不是產生部分檔案,這對於任何你打算保留的剪輯來說,是精確度上較安全的做法。

影響精確度的限制

精確度鏈存在明確的界線,會決定工具能否完成任務。來源限制來自瀏覽器共享的影片安全預算;輸出限制來自 Canvas 大小與錄製器的位元率上限。兩者都必須被遵守,輸出才能維持像素級精確。

限制數值為何影響精確度
來源檔案大小最高 500 MiB較大的檔案會超出安全預算,在解碼前即被拒絕。
來源時長大於 0,最多 5 分鐘會檢查解碼後的時長;時長為零的來源不會被處理。
來源邊長任一邊不得超過 4096 像素超過瀏覽器解碼上限的邊無法測量,因此座標無法驗證。
來源面積面積不得超過 3840 × 2160Canvas 與解碼器共用此面積上限。
裁切尺寸寬度與高度至少 2 像素小於 2 像素的裁切會被拒絕;這能避免分數或零面積的輸出。
位移X、Y 為非負整數像素負值或分數位移不會被解析,如此能維持矩形落在來源之內。
輸出面積不得大於 3840 × 2160限制 Canvas 大小;過大的請求會在錄製開始前失敗。
幀率固定 30 fpsCanvas 以 30 fps 繪製,因此時間精確度在所有幀中均一致。
影像位元率180 kbps 到 8 Mbps依裁切後的像素面積設限;大小與視覺品質會隨動作、編解碼器與瀏覽器編碼器而變動。
容器時長有限的 Matroska Duration缺少此項的串流輸出不算完成的檔案。

任何觸及上述邊界的請求都會回傳錯誤,並且不產生任何檔案。這是刻意的設計:被拒絕的工作,比一個位移、被裁切或不完整的輸出更為精確。

像素精確度最為關鍵的時機

當目的地需要明確的畫面區域時,像素精確度最為重要 —— 例如有嚴格在幀規定的社群平台、必須對齊參考裁切的歸檔工作流程,或是不希望出現靜態不動的邊緣(黑邊、浮水印、麥克風陰影)等瑕疵的交付物。當目的地接受任意的取景,而唯一目標只是移除外圍區帶時,精確度的要求就較低;在這些情況下,粗略的裁切仍可運作,但同樣的精確度紀律能讓輸出保持可預測。

此工具會將同一個矩形套用於每一幀,因此矩形無法跟隨移動中的主體。如果因為鏡頭平移或主體移動,使得不需要的邊緣位置會滑動,則矩形必須設定為足以涵蓋整段剪輯中最糟的位置 —— 單一幀快照中的精確度,並不等同於整段時間軸上的精確度。若需要可重複的工作流程,請將 X、Y、寬度與高度的值與輸出一起儲存,如此第二次執行就能產生相同的矩形;這些數值是契約,檔案則是證據。

對審查者而言,精確度要靠抽樣檢查來定案:在目的地播放器中播放 WebM,跳到第一幀與最後一幀,確認裁切邊緣不會位移,並確認在來源有聲音時音訊能正常播放。請保留來源檔直到所有檢查通過,因為串流式錄製在大小與品質上會隨動作、雜訊、顆粒、來源編解碼器以及瀏覽器的編碼器而漂移,只有並排比對的審查,才能確認儲存的矩形與所要求的矩形一致。

如果你正在比較選項,免費從影片中擷取音訊,無需註冊對此有詳細說明。

如果你正在比較選項,影片裁切器替代方案:像素級精確裁切,無需上傳對此有詳細說明。