擷取影格會從影片中選定的時間戳記拉出一張靜態影像,最重要的一點是:時間戳記是媒體時間軸上的位置,而不是有編號的來源影格——瀏覽器通常會因為關鍵影格、變動幀率、編輯清單、時間戳記四捨五入以及編解碼器行為,而落在附近的解碼影格上,因此同一個時間值在不同的檔案中可能會回傳不同的靜態影像。這個單一的怪異特性,解釋了大多數人遇到的「為什麼我的影格對不上?」抱怨。除此之外,一張靜態 PNG 就是瀏覽器決定給你的內容:該單一影格的原生解碼尺寸,除非工具明確進行調整,否則不會套用縮放、銳利化、色彩管理或內插。在桌面播放器中看起來正常的檔案,在瀏覽器中仍可能拒絕開啟,因為容器支援並不等於編解碼器支援,而影片的安全限制——大小、持續時間和像素面積——通常比人們以為的更嚴格。了解這些限制,才能區分一張可用的靜態影像和一整個浪費掉的下午。

extract frames from video tips and common mistakes
從影片擷取影格:訣竅與常見錯誤

搞砸影格擷取的常見錯誤

錯誤通常集中在三個領域:時間輸入、檔案預期,以及對輸出的假設。第一個錯誤是把時間戳記當成影格計數器。如果你有一段 30 fps 的影片片段,想要第 90 個影格,把 90 ÷ 30 = 3.0 秒會得到一個對時間軸位置的請求——實際回傳的解碼影格可能落在最接近的可用解碼影格上,可能相差不到一個影格間距。將此結果用於縮圖、參考資料、簡報,或從你擁有的媒體快速擷取靜態影像;不要依賴它來進行編輯時序,或與已知影格編號進行比對。

第二個錯誤是假設任何具有正確副檔名的影片都能開啟。MP4、WebM、MOV、M4V 和 Ogg 都是容器;儲存在其中的音訊和視訊編解碼器各有不同,而瀏覽器只會播放它支援的編解碼器檔案。因此,支援的副檔名是必要條件,但並不充分——ProRes MOV、手機錄製的 HEVC MP4,或 VP9 WebM 在不同瀏覽器中的表現都可能不同。

第三個錯誤是期待工具會編輯靜態影像。影格擷取工具不會縮放、裁切、銳利化、內插或套用濾鏡。如果解碼影格是 1920 × 1080,PNG 就是 1920 × 1080——不論是模糊、有雜訊、有黑邊、有浮水印,或是其他任何在該時間軸位置上原本呈現的樣貌。

第四個錯誤是忽略共享的安全限制。大多數本機瀏覽器工具將檔案上限設為約 500 MiB 和 5 分鐘,每一邊不超過 4096 像素,面積不超過 3840 × 2160。4 GB 的螢幕錄影會被拒絕;兩個小時的直播轉存會被拒絕;6K 的手機影片會被拒絕。這些限制保護了瀏覽器的解碼器以及畫布可用的記憶體。

第五個錯誤是期待沒有透明度的影片能產生透明度。PNG 支援 alpha 通道,但解碼後的視訊影格必須提供 alpha 通道,才能在繪製到畫布的步驟中保留下來。大多數相機拍攝的畫面沒有 alpha,所以儲存的 PNG 無論格式為何都是不透明的。

挑選正確時間戳記的訣竅

使用工具接受的格式。Video Frame Extractor 的時間欄位接受從零到影片回報時長之間的分數秒,因此像 0.5、12.375 和 59.999 這類數值都有效。對於幀率式小數,請四捨五入到最接近的可表示分數:29.97 fps ≈ 每影格 0.0334 秒,59.94 fps ≈ 每影格 0.0167 秒,23.976 fps ≈ 每影格 0.0417 秒。

運用場景切換的直覺。如果你不知道精確的秒數,先在任何本機播放器中拖動影片進度,停在你要的時刻,讀取播放器本身的時間戳記計數器。該時間戳記比較接近媒體時間軸位置,而不是影格編號,這正是擷取工具所需要的。

留一點餘裕。由於瀏覽器搜尋可能落在附近的解碼影格上,請先輸入你要的時間,然後查看結果。如果你想要的時刻落在兩個解碼影格之間,通常會得到較接近的那一個。如果你需要下一張可能的靜態影像,將時間微調一個影格間距的分數,然後再次擷取。

檢查八個時間測試點。一個製作良好的擷取工具應能處理起始 (0.000)、毫秒值 (0.001、0.250)、分數秒 (1.5)、一般秒數 (10)、幀率式小數 (29.97)、一分鐘 (60),以及最大時長邊界(即回報的時長本身)。這些測試點通過與否,是信任該工具處理你的影片之前一個有用的健全性檢查。

如何使用 Video Frame Extractor 擷取單一影格

  1. 選擇一個支援的本機影片,並等待其時長和預覽載入完成。瀏覽器必須先解碼容器,任何時間輸入才有意義。
  2. 輸入介於零和顯示時長之間的影格時間,必要時包含小數。像 0.000、1.5、29.97 和 60 這類數值都是有效的輸入。
  3. 選擇擷取 PNG 影格,在預覽區域中確認靜態影像,然後下載本機 PNG。輸出檔名包含選定的時間,檔案使用解碼影格的尺寸。

完整的工作流程——選擇、時間輸入、擷取、確認、下載——都在目前的分頁中進行,使用瀏覽器的視訊解碼器、HTMLMediaElement 搜尋、canvas drawImage 和 PNG canvas 編碼。解碼、搜尋、畫布和編碼的失敗會被回報,而不是產生空白的下載,所以遺失的 PNG 通常代表有真正的錯誤需要處理,而不是靜默的失敗。請參閱 MDN 的 HTMLMediaElement.currentTimeMDN 的 CanvasRenderingContext2D.drawImage 的基礎原生物件。在 Video Frame Extractor 開啟工具。

容器與編解碼器:為什麼有些檔案拒絕開啟

下方的格式表格顯示 Video Frame Extractor 接受的五種容器類型、每種容器通常承載的編解碼器,以及在瀏覽器中開啟它們的實際意義。「通常可開啟」表示該編解碼器受到廣泛支援;「部分」表示僅在部分瀏覽器上可開啟;「通常無法」表示一般無法開啟。

容器內部常見的編解碼器典型的瀏覽器行為
MP4H.264、HEVC、AV1、ProRes、MPEG-4H.264 通常可開啟;HEVC 部分支援;ProRes 通常無法開啟
WebMVP8、VP9、AV1VP8 和 VP9 通常可開啟;AV1 支援持續成長中
MOVH.264、ProRes、HEVC、MJPEGH.264 通常可開啟;ProRes 通常無法開啟
M4VH.264,有時為 HEVC類似 MP4;H.264 通常可開啟,HEVC 部分支援
OggTheora、Vorbis、OpusTheora 通常可開啟;較新的編解碼器較少見

如果你的檔案符合「通常無法」那一列,擷取工具會回報解碼失敗,而不是靜默地產生空白的 PNG。修正方式通常是用桌面工具將檔案轉碼為你的瀏覽器接受的容器和編解碼器組合,然後再回來擷取靜態影像。

你必須遵守的安全限制

本機瀏覽器工具不會上傳你的影片,但它們仍會對瀏覽器解碼器和畫布能處理的內容施加真正的限制。限制 Video Frame Extractor 的共享影片安全政策摘要如下。

限制上限為何重要
檔案大小最高 500 MiB瀏覽器記憶體與解碼器負擔
持續時間不超過 5 分鐘減少搜尋時間和記憶體壓力
最長邊不超過 4096 像素畫布與材質限制
總面積不超過 3840 × 2160邊長組合限制,約 8.3 百萬像素

長邊超過 4096 像素的 6K 手機影片,即使遠低於 500 MiB 也會被拒絕。兩個小時的螢幕錄影,即使只有 100 MB 也會被拒絕。如果你的輸入超過上述任何上限,解決方法是先用 Video TrimmerVideo Resizer 等工具修剪或調整來源大小,然後再回來擷取靜態影像。

什麼時候該完全跳過瀏覽器工具

在瀏覽器中擷取影格非常適合快速取得靜態影像,但它並不能取代所有工作流程。當你需要影格精確的編輯時序、準確的影格編號、HDR 或色彩管理輸出、alpha 通道工作流程、跨數百或數千個時間戳記的批次擷取,或超過大小上限的影片時,請跳過瀏覽器擷取工具。當來源編解碼器是你的瀏覽器完全無法解碼的格式時,也請跳過——先轉碼會比和一張壞掉的靜態影像奮戰更快。如需關於精確度方面的深入閱讀,請參閱 從影片擷取影格:精確度限制解析;如需關於「如何選擇時間」這個實際問題,請參閱 從影片擷取影格:如何挑選正確的時間。如需實際的逐影格工作流程,請直接開啟 Video Frame Extractor。