要把超音波影片中的某一個畫面擷取成 PNG,請在瀏覽器型畫面擷取工具中開啟該短片的一個本地副本,輸入一個以秒為單位的時間點來指向你想擷取的瞬間,然後下載瀏覽器在該位置解碼出來的靜態畫面。整個工作都在你目前的分頁中執行:檔案不會被上傳,影片也不會被重新編碼,而你儲存的 PNG 是直接從該已解碼畫面以其原始像素大小繪製出來的。超音波短片通常是由手機或螢幕錄製的 MP4 或 MOV 短片,因此非常適合這種做法,因為負責預覽短片的同一個 video 元素,正是擷取工具所要 seek 進入的對象。使用 Video Frame Extractor 時,你只要輸入一個想要的時間點,�覽器就會把該畫面解碼到一個 canvas,然後一個以你要求的時間命名的 PNG 就會下載到你的下載資料夾中。要特別注意的是,要求的時間是媒體時間軸上的位置,並非保證對應到某個特定的來源畫面編號,所以瀏覽器可能會因為關鍵畫面、可變畫面率以及時間戳記的四捨五入,而落在附近的某個已解碼畫面上,這也是為什麼在分享之前你應該先確認該靜態畫面的內容。

為什麼擷取超音波畫面需要一個私密的、本地的工作流程
超音波短片往往帶有個人性質。大多數是用手機從診所螢幕錄下的,以 MP4 或 MOV 格式存放在手機相機膠卷中,或是從影像系統匯出為短小的衍生自 DICOM 的影片。無論來源為何,內容都屬於病患或準父母,為了抓一張靜態畫面就把檔案上傳到不知名的網站是很難說得過去的。Video Frame Extractor 直接回應了這個疑慮:你選擇的檔案是在瀏覽器分頁內部解碼,畫面會繪製到 canvas 上,PNG 在本地端產生,並以一般下載連結的形式提供於當前分頁。不會有任何東西被送到伺服器。
這件事的重要性超越隱私考量。由於這個工具不會重新編碼短片,所以 PNG 會以原本的像素尺寸擷取該已解碼的影片畫面,你不會因為轉檔過程而損失解析度。輸出檔名甚至會帶有你輸入的時間,方便你清楚記錄下擷取的是哪個瞬間。對產科紀念用途、第二意見的參考資料或教學檔案而言,這種「全程在本地端」的工作流程與其說是加分,不如說已經是預期的標準做法。
從你的超音波影片擷取畫面
一旦檔案載入完成,整個擷取過程只需要幾秒鐘,下面的順序與已驗證的操作流程一致。
- 開啟工具並選擇一個支援的本地影片。瀏覽器的檔案選擇器可讓你挑選單一的 MP4、WebM、MOV、M4V 或 Ogg 檔。請等待 duration 欄位填上數值,且預覽畫面顯示出第一個 frame,這代表容器內部的 codec 確實是瀏覽器能解碼的,而不僅僅是副檔名被辨識出來。
- 輸入你想要擷取的瞬間的時間。該欄位接受從 0 到顯示出來的 duration 之間、以秒為單位的數值,也歡迎小數。輸入 0 代表第一個 frame,12.5 代表影片開播後十二點五秒的位置,0.033 則代表靠近開頭的毫秒級位置。
- 選擇 Extract PNG frame。瀏覽器會將 video 元素 seek 到你輸入的時間,等待 seek 完成,把當前已解碼的 frame 繪製到一個相同大小的 canvas 上,然後編碼為 PNG。
- 檢查擷取出的畫面。擷取出的 PNG 預覽會出現在工具中。在儲存之前,請先確認它真的就是你要的那個瞬間,因為這個步驟正是用來抓出關鍵畫面四捨五入所帶來的意外狀況。
- 下載 PNG。點擊下載連結,把靜態畫面存到你的裝置上。檔名會包含你輸入的時間,這對日後追溯�取的是哪個瞬間很有幫助。
如果檔案選擇器接受了你的檔案,但預覽始終沒有載入,那就是容器內部的 codec 相容性出了問題。副檔名雖然正確,但裡面的 audio 或 video track 並不支援。
在超音波短片中挑選正確的瞬間
超音波影片通常都很短,往往只有幾秒到幾分鐘不等,但有意義的那個瞬間通常只是單一次的心跳、單一張側面輪廓,或是單一張測量中的 frame。要挑對時間,重點是先快速瀏覽過整段短片,記下你要的那個畫面大致穩定下來的秒數。
一個簡單的做法:
- 在任何本地播放器中開啟影片,scrub 到最接近你印象中那張靜態畫面的那一秒。
- 四捨五入到最近的十分之一秒,然後把該數值輸入畫面擷取工具的時間欄位。
- 擷取 frame 並檢查結果。如果你差了一拍的節奏,就把時間往任一方向調整十分之一秒再擷取一次,因為每一次執行都是獨立的,你可以很便宜地反覆嘗試。
對於第一孕期(first-trimester)的紀念用途來說,心跳的輪廓通常只佔畫面的一小部分,這種情況下使用工具保留的原始像素大小會特別有幫助。對於較晚期的掃瞄,如果解剖構造已經填滿更多畫面,同一張靜態畫面也能兼任與專科醫師分享的臨床參考圖,因為解碼出來的 frame 帶有原本的顏色與解析度,而不是縮小過的縮圖。
時間欄位接受的輸入格式
時間欄位只是一個代表「瞬間」的數字,但你能夠達到的精細度取決於你怎麼寫它。產品規格列出八個 fixture 值,涵蓋邊界以及常見的各種情況。請把下表視為輸入形式的快速參考,而不是對應到特定來源 frame 編號的指南,因為實際解碼到哪一個 frame 會依關鍵畫面與時間戳記而定。
| 使用情境 | 輸入範例 | 備註 |
|---|---|---|
| 最開頭的第一個 frame | 0 | 整數 0 會落在時間軸的起點。 |
| 靠近開頭的毫秒級 | 0.033 | 三位小數可解析到單一毫秒。 |
| 短片中間的小數時間 | 12.5 | 一位小數可達半秒精度。 |
| 一般的整數秒數 | 30 | 一秒級貼齊就夠用時,直接用整數。 |
| 對應畫面率的小數寫法 | 7.04 | 兩位小數對齊 25 fps 的節奏。 |
| 一分鐘的刻度 | 60 | 用整數代表一分鐘邊界。 |
| 靠近結尾 | duration − 0.1 | 停留在回報的 duration 之內一點點。 |
| 允許的最大值 | duration | 該欄位能接受的上限就是 duration 本身。 |
輸入任何大於顯示出來的 duration 的數值,都會被時間解析器拒絕;下界則是 0,因為該欄位不認得負數。
限制、codec 與畫面精度的注意事項
有三項限制會互相影響,決定擷取流程究竟能不能跑完。共享的影片安全政策把單一來源檔案上限設為 500 MiB,長度上限 5 分鐘,單邊不得超過 4096 像素,且面積不得超過 3840 × 2160 像素。如果你的超音波短片超過其中任何一項,檔案選擇器仍然會讓你選取,但解碼器會失敗,工具會把失敗情形呈現出來,而不是丟一個空白的 PNG 給你。
瀏覽器的 codec 支援是第二道關卡。MP4 是一種容器而不是 codec,所以檔案內部可能裝的是 H.264 影片與 AAC 音訊,但也可能是 HEVC、ProRes,或某個瀏覽器並不支援的冷門規格。MOV 與 M4V 這兩種關係密切的容器也一樣。WebM 與 Ogg 格式在網頁上比較可預期,但也只有在內部 codec 是 VP9、VP8 或 AV1 影片搭配 Opus 或 Vorbis 音訊時才行。當一段短片怎麼樣都打不開時,解法幾乎總是從裝置或影像系統把那段超音波錄影重新匯出成一個廣泛支援的 codec,而不是一直重試同一個檔案。
第三個注意事項是大多數人最容易忽略的。要求輸入的時間是媒體時間軸上的位置,並不等於保證能精準對應到來源 frame。瀏覽器會 seek 到鄰近的某個已解碼 frame,這是因為關鍵畫面、可變畫面率、edit list、時間戳記的四捨五入以及 codec 行為所致。顯示出來的時間代表你要求的時間點,而這個工具並不會檢查封包時間戳記,也無法指認出一個精確編號的來源 frame。這就是為什麼前面操作流程中要有「擷取、檢查、調整、再擷取」這個驗證步驟的原因。
什麼時候該改用專用的桌面工具
這個本地端的瀏覽器工作流程足以涵蓋大多數單張靜態畫面的需求,包括產科紀念用途、快速的參考圖與簡報投影片。對於下列情況,它並不是合適的選擇:需要精確到特定編號來源 frame 的編輯工作、需要與原始訊號相符的 HDR 或色彩管理輸出、需要 alpha channel 的工作流程、需要對一段很長的影片進行批次擷取,或瀏覽器根本無法解碼的容器與 codec 組合。碰到這些情況時,桌面級的非線性剪輯軟體 (NLE) 或專用的 frame-grabber 能讓你掌控已解碼 frame 的 index、色彩空間與匯出格式,而這些是基於 canvas 的管線所做不到的。
如果你的目標就是要在精確的時間點取得一張完整解析度的 PNG,而且該短片落在政策限制之內,那麼 Video Frame Extractor 仍然是最簡單的一條路。想進一步了解 canvas 繪製與 PNG 編碼在底層究竟是如何運作的話,capture a video frame as a PNG guide 這份指南會用額外的註解,帶你走過同樣的流程並補充有關原始尺寸的細節。如果你曾經需要確認 HTMLMediaElement.currentTime 在 seek 期間究竟控制的是什麼,那麼 MDN 上 currentTime 的參考文件,就是瀏覽器如何解讀你所傳入時間軸位置的權威說明。
延伸閱讀:Best Video Format for LinkedIn and How to Resize Locally。