你可以在 Android 上從影片擷取畫面,方法是在手機上開啟瀏覽器式的畫面擷取工具,選擇本機的 MP4、WebM、MOV、M4V 或 Ogg 檔案,輸入你想要的時間(以秒為單位),然後將解碼後的畫面下載為全尺寸的 PNG。整個流程都在你裝置的瀏覽器分頁中完成——影片從未離開手機,不需要安裝專屬的 Android 應用程式,原始短片也不會重新編碼或修改。改變的只是那一張靜態影像,它會以原生解碼尺寸從影片中擷取,並匯出為新的 PNG 檔,檔名中會包含你選定的時間。

當你需要一張縮圖、一張參考畫面、從既有短片中擷取的截圖,或是投影片用的一張快速靜態影像,同時想繼續使用手機作業時,這種「單張靜態影像」的做法就是最合適的選擇。瀏覽器會使用標準的 HTMLMediaElement 搜尋行為在本機處理解碼與定位,然後透過 Canvas drawImage 呼叫擷取目前的畫面,並在同一個分頁中編碼為 PNG,因此整個工作流程在 Android 上是獨立完成的。

extract frames from video android
extract frames from video android

為何瀏覽器式的畫面擷取工具適合 Android

大多數 Android 的影片工具若要擷取畫面,通常需要從 Play Store 安裝獨立的應用程式,或是將檔案上傳到遠端伺服器,而且許多免費應用程式只能產出較低解析度的影像、帶有浮水印,或是匯出整批的縮圖網格,而非一張全尺寸的靜態影像。瀏覽器式的做法則能避開這兩個問題:不需要下載 APK,除了檔案選擇器外不需要授予任何權限,也不會消耗上傳頻寬——這在行動網路連線下特別重要,因為上傳一支數百 MB 的手機錄影可能需要很長時間並耗用大量數據。

由於這個工具在 Android 瀏覽器中執行時使用的是與桌面瀏覽器相同的 HTMLMediaElement 和 Canvas API,因此不論你是透過 Android 版 Chrome、Samsung Internet 或其他現代行動瀏覽器進入,流程都是一樣的。瀏覽器內部的解碼器會決定哪些短片可以開啟,而這就是 Android 專屬行為主要出現的地方——特定 Android 裝置上的編解碼器支援,取決於瀏覽器版本與底層媒體堆疊,而非工具本身。

如何在 Android 上從影片擷取畫面

在 Android 手機上的整個工作流程都在單一瀏覽器分頁中完成,每張畫面只需幾秒鐘。

  1. 在你的 Android 瀏覽器中開啟 Video Frame Extractor 頁面。點選檔案選擇器,從手機儲存空間中挑選一支支援的本機影片——MP4、WebM、MOV、M4V 或 Ogg 檔案都是瀏覽器會嘗試載入的格式。
  2. 等待時長與預覽載入完成。瀏覽器讀取足夠的中後資料後,頁面會顯示影片的時長;而預覽則會在檔案緩衝足夠內容、讓時間軸能夠顯示時出現。
  3. 輸入你想要的畫面時間。請使用介於零與所顯示時長之間的值,需要次秒級精度時可使用小數——例如輸入 0.5 表示進入半秒,或輸入 12.75 表示進入十二又四分之三秒。
  4. 點選「Extract PNG frame」。瀏覽器會將本機媒體元素定位到你指定的時間,將解碼後的畫面繪製到同尺寸的 canvas 上,然後將該 canvas 編碼為 PNG。
  5. 在螢幕上確認該張靜態影像。如果正是你要的畫面,請點選隨後出現的下載連結,將 PNG 儲存到你的手機下載資料夾。
  6. 如果你想要不同的畫面,請更改時間並再次執行擷取。每次結果都是各自獨立的 PNG 檔,檔名中會包含所選的時間,因此先前的擷取結果不會被覆寫。

這與 extract frames from a video without uploading 教學中介紹的做法相同,只是檔案選擇器是從你的 Android 裝置取得檔案,而非桌面資料夾。

這個工具做了什麼,以及不會改變什麼

這個擷取工具只做四件事,而且也只有這四件事:依據共用的影片安全限制驗證所選的本機檔案、解析你輸入的時間、將瀏覽器的媒體元素定位到該時間點,然後將解碼後的畫面寫入 PNG。影片本身不會被修改——沒有重新編碼、沒有轉檔、沒有重寫中後資料——因此擷取靜態影像後,手機上的原始短片仍維持不變。

它所產生的 PNG 採用解碼後畫面的原生像素尺寸,並且只有在瀏覽器解碼出的影片畫面帶有透明度時才會保留透明度。過程中沒有調整大小、沒有裁切、沒有銳化、沒有在畫面之間進行內插,也沒有套用任何濾鏡。如果你需要上述任何調整——例如想要一張正方形的縮圖當作大頭貼,或需要特定像素範圍的影像——請將輸出搭配影像編輯器使用,或先對原始短片使用 Video Cropper,再從裁切後的版本擷取。

你輸入的時間會被視為媒體時間軸上的一個位置,而非編號過的原始畫面。根據 HTMLMediaElement currentTime 的 MDN 參考說明,定位到帶有小數的秒數時,會落在最接近的可播放位置,這在大多數短片中就是最近的解碼關鍵影格。這就是為什麼兩次只相差幾毫秒的擷取,可能會回傳同一張影像——瀏覽器可能無法將時間軸上的每一微秒都渲染成獨特的靜態影像。Canvas drawImage 呼叫所寫入的,就是媒體元素當前所持有的畫面,而不會在相鄰的原始畫面之間進行內插。

限制、編解碼器,以及 Android 專屬的注意事項

Android 手機會以幾種常見的容器格式錄製短片,但每種容器內部可能裝載不同的音訊與視訊編解碼器,而能否開啟檔案完全由瀏覽器決定。下表整理了支援的容器與相關的編解碼器注意事項。

容器 Android 常見用途 瀏覽器需求
MP4 大多數 Android 手機的預設相機錄影格式 瀏覽器必須支援容器內的編解碼器(通常為 H.264 視訊與 AAC 音訊)
WebM 螢幕錄影與部分編輯器的匯出格式 瀏覽器必須支援 VP8、VP9 或 AV1 視訊
MOV 較舊的 iOS 匯出檔案與部分專業相機應用程式 瀏覽器必須支援容器內的編解碼器;MOV 是一種 QuickTime 容器
M4V iTunes 類型的影片與部分 Android 下載內容 瀏覽器必須支援容器內的音訊與視訊編解碼器
Ogg 在 Android 上較少見但仍會遇到 瀏覽器必須支援 Theora 視訊與 Vorbis 音訊

支援的副檔名並不保證能播放。舉例來說,以 HEVC(H.265)錄製的 MP4 檔案,在某些 Android 瀏覽器上可以開啟,在其他瀏覽器上卻無法開啟,即使檔案副檔名完全相同。當瀏覽器無法解碼該編解碼器時,擷取作業會回報解碼、定位、canvas 或編碼失敗,而不是產生一個空白下載檔,因此沒有結果本身就是該裝置不支援該檔案編解碼器的訊號。

共用的影片安全政策在 Android 上的適用方式與在桌機上相同:檔案大小最多 500 MiB,時長不得超過五分鐘,影片任一邊的像素不得超過 4096 像素,總面積必須維持在 3840 × 2160 像素以內。手機錄影通常都遠在這些限制範圍之內,但一支長片 4K 螢幕錄影可能很快就會達到像素上限,並在擷取開始前就被拒絕。

何時該改用專屬的 Android 應用程式或桌面工具

當你需要從一支短片、在已知的時間點擷取單張畫面,且該容器是瀏覽器能夠解碼的格式時,瀏覽器工具就是正確的選擇。對於頁面本身列為超出範圍的工作,它就不是合適的工具:需要精準到畫面數的剪輯工作、HDR 或色彩管理輸出、一次批次擷取多張靜態影像、需要精確的畫面編號而非時間軸位置、非常長的影片,或任何瀏覽器無法解碼的格式。

若要在 Android 上執行批次或精準到畫面數的工作,專屬的應用程式(例如基於 FFmpeg 的擷取工具或專業影片編輯器)可讓你指定畫面編號、逐格瀏覽時間軸,或匯出整體接觸表。至於 HDR 與色彩管理工作,通常需要使用能讀取母帶中後資料並保留色彩管線的桌面工具,而不是透過瀏覽器的解碼器來處理。

至於其他需求——單張靜態影像、已知時間點、來自你手機已經能播放的短片——Android 上的瀏覽器內做法就已足夠,而且原始影片從未離開你的裝置。

如果你正在權衡各種選項,Extract Audio from Video: Accuracy, Codec, and Limits 對此有詳細說明。