從影片中擷取一張影像,代表從一段動態片段中選取某一個瞬間,並將其另存為獨立的靜態檔案,最常見的格式是 PNG。如今最快完成這件事的做法,就是直接在瀏覽器中載入影片,將媒體元件跳到你想擷取的那一秒,把解碼後的影格以原始尺寸繪製到畫布上,再讓畫布 API 將結果編碼成可下載的影像。由於瀏覽器本身已內建影片解碼器與畫布引擎,因此不需要任何桌面軟體,影片片段也不會離開你的裝置。一個現代化的線上擷取工具會在簡單的表單背後處理所有步驟:選擇本機檔案、輸入時間、點擊擷取、然後下載 PNG。這整個流程正是 Video Frame Extractor 所設計的功能,而且它會保留解碼後的尺寸,使產生的影像是原始大小,而不是小小的縮圖或被拉長的螢幕擷圖。

無需安裝的瀏覽器擷取方式
大多數搜尋「capture image from video」的人,都想要一張可以貼到投影片、分享到社群媒體、附加到文章,或當作縮圖使用的靜態圖片。桌面編輯器、命令列工具和行動應用程式都能做到這件事,但每一種都帶有一些阻力:下載、安裝、登入、編解碼器套件,或是大型檔案傳輸。基於瀏覽器的擷取工具則能免除大部分這類麻煩。檔案會透過 File API 在本機讀取,由瀏覽器內建的影片解碼器解碼,再以該影格實際的像素尺寸渲染到畫布上。不會上傳任何東西,影片也不會重新編碼,而產生的影像會直接從畫布資料產生為 PNG。
由於靜態影像是從已解碼的影格繪製而成,而非來自螢幕擷取,因此可以避免因縮減取樣預覽縮圖所造成的解析度損失與色彩偏移。對於長達幾分鐘的影片片段來說,這種做法通常比安裝專用軟體更快速也更乾淨。
工具接受與輸出的內容
Video Frame Extractor 可處理瀏覽器能播放的影片容器:MP4、WebM、MOV、M4V 與 Ogg。每個容器內部都可能包含多種不同的音訊與視訊編解碼器,因此受支援的副檔名雖是必要條件,卻不是充分條件。某個特定檔案是否真的能開啟,取決於其內含的編解碼器,以及你的瀏覽器是否隨附對應的解碼器。
輸出永遠是單一張 PNG。該 PNG 採用已解碼影格的原生像素尺寸,因此影像是原始大小。檔名中會包含你所選取的時間,這樣在從同一部影片擷取多張影格時,就能輕鬆分辨。這個工具不會調整大小、裁切、銳利化、內插或套用任何色彩濾鏡;你在預覽中看到的靜態影像,就是你下載到的靜態影像。
| 輸入 | 輸出 | 限制(共用影片安全政策) |
|---|---|---|
| MP4、WebM、MOV、M4V、Ogg | 以解碼後原生尺寸輸出的單一 PNG | 上限 500 MiB 且 5 分鐘 |
| 僅限本機檔案,不上傳 | 檔名包含所選取的時間 | 每邊不超過 4096 像素 |
| 時間欄位接受 0 至回報時長之間的帶小數秒數 | PNG 直接從畫布繪製,不重新編碼 | 總像素不大於 3840 × 2160 |
只有在已解碼的影片影格本身帶有 alpha 通道時,透明度才會被保留下來。大多數消費級影片格式並不具備 alpha 通道,因此從一般影片擷取出的 PNG,其表現就像普通的 RGB 影像。
如何從影片擷取影像
一旦預覽就緒,整個過程只需幾個步驟。
- 開啟 Video Frame Extractor,並從你的裝置中選擇一個本機影片檔案。請先等待時長與預覽影格載入完成後再繼續;所顯示的時長就是時間欄位的上限。
- 以秒為單位輸入你想要的時間。該欄位接受帶小數的值,因此當你需要毫秒級精度時,可以使用像 12.5 或 73.25 這類小數。數值必須介於零與回報的時長之間。
- 選取 Extract PNG frame。瀏覽器會跳到該媒體時間軸位置,以原生大小將已解碼的影格繪製到等大的畫布上,然後在目前的分頁中將結果編碼為 PNG。
- 在預覽中確認靜態影像是否符合預期。如果不符,請更改時間並再次擷取;每次執行都會產生一張新的 PNG,並將所選取的時間嵌入檔名中。
- 下載 PNG。檔案會儲存在本機,而暫時性的物件 URL 會在你變更輸入或關閉工具時被釋放。
上述每個步驟都完全在你的瀏覽器中執行。影片檔案會在本機讀取,已解碼的影格會透過畫布 API 繪製(請參閱 MDN drawImage 參考文件),而產生的 PNG 會以本機下載的方式提供。影片完全沒有任何副本會離開你的機器。
容器與編解碼器:為何有些檔案無法開啟
容器是外層的封裝格式,而編解碼器則是實際裝在裡面的內容。MP4 是一種容器,通常裝載 H.264 或 HEVC 視訊;WebM 通常裝載 VP8、VP9 或 AV1;MOV 與 MP4 關係密切;M4V 是 Apple iTunes 風格的變體;Ogg 則常裝載 Theora 或 Dirac。你的瀏覽器隨附一組固定的解碼器,因此即便磁碟上的容器看起來完全正常,若其中所含的特定編解碼器缺失,仍可能無法載入。
這就是為什麼來自某台相機的 MP4 檔案可能擷取得很順利,但來自另一個來源的 MP4 卻會出現解碼錯誤。當瀏覽器無法解碼該檔案時,Video Frame Extractor 會回報失敗,而不是產生空白的 PNG。遇到這種情況時,你通常需要將檔案重新封裝(remux,將既有的視訊串流移到你瀏覽器支援的容器中),或使用編解碼器涵蓋範圍更廣的桌面工具進行轉檔。
比較從影片擷取靜態影像的常見方法
不同的方法適合不同的需求。下表整理了基於瀏覽器的擷取工具、作業系統的截圖快捷鍵、媒體播放器的快照功能,以及命令列工具之間的取捨。
| 方法 | 需要上傳嗎? | 輸出大小 | 時間精度 | 需要安裝嗎? |
|---|---|---|---|---|
| 瀏覽器影格擷取工具 | 否,在本機執行 | 原生解碼尺寸 | 媒體時間軸位置,非精準到影格 | 否 |
| 作業系統截圖快捷鍵 | 否 | 顯示器解析度,通常低於來源 | 即時,需要手動暫停 | 否 |
| 媒體播放器快照 | 否 | 播放器的渲染大小 | 大多數播放器可達影格精準 | 是 |
| 命令列工具 | 否 | 原生,可完全自行設定 | 使用正確參數時可達影格精準 | 是 |
如果你需要影格精準的時機、批次擷取、HDR 流程處理,或 alpha 通道作業,那麼專用桌面工具會是更好的選擇。如果你只是為了部落格文章或縮圖,需要一張在大概時間點的乾淨靜態影像,那麼瀏覽器擷取工具通常是最輕量化的做法。
瀏覽器擷取工具不適用的情境
基於瀏覽器的擷取是建立在若干取捨之上的,當你的任務超出這些範圍時,這些取捨就會變得重要。
- 需要影格精準的編輯工作:所要求的時間是媒體時間軸上的位置,並不等同於來源影格精度的保證。瀏覽器可能會因為關鍵影格、可變幀率、編輯列表、時間戳記四捨五入以及編解碼器行為等因素,而定位到鄰近的已解碼影格。若要進行編號影格的擷取,請使用能讀取封包時間戳記的工具。關於該流程的實用概覽,請參閱在精準時間取得影片影格影像指南。
- HDR 或色彩管理輸出:基於瀏覽器的擷取並非為 HDR 或色彩管理工作流程所設計;這類情況請使用專用桌面工具。
- Alpha 通道工作流程:只有在已解碼的影格帶有 alpha 通道時,透明度才會被保留下來;大多數消費級影片並不具備,而畫布編碼器也無法無中生有。
- 批次擷取:此擷取工具每次點擊只會產生一張 PNG。從一部長影片中拉出數百張影格,應該交給具備批次功能的工具來處理。
- 長片或巨大檔案:共用安全政策將輸入上限設為 500 MiB、5 分鐘、每邊 4096 像素,以及 3840 × 2160 的總像素。超出這些限制的內容會在解碼開始前就被拒絕。
- 瀏覽器無法解碼的格式:特殊的編解碼器、專業相機格式,或高位元深度的 mezzanine 檔案,必須先經過專用轉檔工具,才能進行擷取。
不過,在其所支援的範圍內,瀏覽器擷取仍是取得靜態影像最輕鬆的途徑:一個檔案選擇器、一個時間欄位、一個按鈕,以及一張可下載的 PNG。Media Source Extensions 與 HTMLMediaElement 的 currentTime 屬性(記載於 MDN 的 HTMLMediaElement currentTime 參考文件)讓瀏覽器擁有與桌面工具相同的基礎機制,同時讓你的影片檔案全程都保留在你自己的裝置上。
若想更深入了解,請參閱從影片擷取影格:精度限制完整說明。