1 選一個影片
- 檔案
- —
- 大小
- —
- 畫面
- —
- 時長
- —
- 影片
- —
- 幀數
- —
2 找到那一幀
拖動滑塊在片子裡移動,或者播放然後在想要的地方停下。← 和 → 一次挪一幀,配合 Shift 一次挪十幀,空格播放和暫停。
正在解碼…
0:00.000
3 把這一幀取下來
畫質 92 只有 PNG 會把這一幀原樣存下。其他格式都是在影片自身的壓縮之上再壓一遍。
每隔 做一覽圖,或者隔一陣取一張縮圖。最多 500 張。
直接從資料夾裡開啟 index.html,瀏覽器會攔下 JavaScript 模組,於是你選好一個影片之後,頁面不會有任何反應。改用 http 把這個資料夾提供出去:
powershell -ExecutionPolicy Bypass -File serve.ps1
然後開啟 http://localhost:8080/。
任意位置,一張原畫質靜幀。
幀的查詢、解碼和繪製,都由你自己的瀏覽器在你自己的硬體上完成。這裡沒有任何東西能取或能發,因為這個工具壓根就沒有網路功能。就算有路可走,頁面的另一端也根本沒有伺服器可以接收影片。
即時檢查: 檢查中…
離線: 檢查中…
不用信我們說的。開啟開發者工具,盯著「網路」面板,截一幀試試。沒有哪個請求帶上圖片、檔名,或者你選中內容裡的任何一個位元組。嫌麻煩就直接拔掉網線,照樣截。真要把你的影片送出去處理,那時候它就直接不動了。
你可以自己核對。上面這些不用你信。這個頁面是儲存庫裡的模板和配置產生出來的,構建指令碼你能讀,也能自己跑一遍,跑出來的結果就提交在 dist 分支上。拿實際發給你的內容,跟你自己從原始碼構建出來的結果對一遍就知道了:
github.com/A-Box-of-Tools/website
最值得先讀的幾個檔案:config/site.toml 裡是 Content-Security-Policy,src/shared/mp4-reader.js 是在 MP4 裡找出各幀的讀取器,src/frames.js 是負責把你要的那一幀解出來的部分。兩者都沒有引入任何能發出請求的東西。
如果公司的安全軟體警告說有上傳。它盯著瀏覽器裡選擇檔案的那一刻,而且無法知道頁面是否打算把它發出去——所以在選擇時就發出警告。這裡什麼都不會發出去:開啟瀏覽器的開發者工具,切到網路,然後選一個檔案。沒有任何請求帶著它,除了這個頁面自己的本地預覽之外,根本沒有任何請求。同樣的檢查,你們的 IT 同事半分鐘就能做完。
拖動滑塊在片子裡移動,或者播放然後在想要的地方停下。← 和 → 一次挪一幀,配合 Shift 一次挪十幀,空格播放和暫停。
正在解碼…
0:00.000
畫質 92 只有 PNG 會把這一幀原樣存下。其他格式都是在影片自身的壓縮之上再壓一遍。
每隔 做一覽圖,或者隔一陣取一張縮圖。最多 500 張。
這次管用嗎?
哪裡不對?
謝謝,這很有用。
發出去的只有你這個回答,而且只在你按下按鈕的時候。你的檔案、它的名字,以及跟它有關的任何東西,一樣都不發。
# 影片截幀 — 把影片裡的某一幀存成圖片 任意位置,一張原畫質靜幀。 > 把 MP4、MOV 或 WebM 的任意一幀存成原尺寸 PNG 或 JPEG。可以一幀一幀地挪,也可以每隔幾秒截一張。全在瀏覽器裡跑,什麼都不上傳。 本頁是一個完全在你的瀏覽器裡執行的互動式工具,地址是 https://abox.tools/zh-TW/grab-frame/。你交給它的任何內容都不會被上傳。下面是這個頁面用文字對該工具的全部說明;要使用它,請開啟這個地址。 ## 你的影片**不會上傳**。這裡根本沒有伺服器。 幀的查詢、解碼和繪製,都由你自己的瀏覽器在你自己的硬體上完成。這裡沒有任何東西能取或能發,因為這個工具壓根就沒有網路功能。就算有路可走,頁面的另一端也根本沒有伺服器可以接收影片。 - ✗ 不上傳 - ✗ 不註冊 - ✗ 無水印 - ✓ 原始解析度 - ✓ 斷網可用 ## 從影片裡截一幀的步驟 1. **選一個影片。** 把 MP4、MOV、M4V 或 WebM 拖到選擇框裡,或者自己找出來。瀏覽器直接從磁碟上讀,這期間沒有任何東西發往別處。 2. **找到那個瞬間。** 播放然後在想要的地方停下,或者拖動滑塊。MP4 的滑塊一格就是一幀,所以你看到的和你存下的之間不存在取整。方向鍵一次挪一幀,按住 `Shift` 一次挪十幀。 3. **挑一個格式。** PNG 會把解碼出來的幀原樣存下,這就是這裡說的「原畫質」。JPEG 和 WebP 更小,但會在影片自身的壓縮之上再壓一遍,用來預覽沒問題,用在之後還要再編輯的圖上就不合適。 4. **截一張,或者截一串。** 單張會直接進你的下載。「每 N 秒」會把片子走一遍,在每個刻度取一張,做一覽圖和縮圖時很好用,而且它們會打包成一個 ZIP,而不是彈一百次儲存提示。 ## 說得更細的版本 [怎麼把影片裡的一幀存成圖片](https://abox.tools/zh-TW/guides/grab-a-frame-from-a-video/): 按原解析度從片子裡取一張靜幀:為什麼暫停後的截圖不是同一張圖、該存成什麼格式,以及怎麼正好停在你想要的那一幀。 ## 工具箱裡還有 - [影片轉 GIF](https://abox.tools/zh-TW/video-to-gif/): 挑好段落、尺寸和幀率。 - [GIF 製作](https://abox.tools/zh-TW/gif-maker/): 把一組圖片變成一段動畫。 - [GIF 拆幀](https://abox.tools/zh-TW/split-gif/): 每一幀都單獨存成一張 PNG。 - [GIF 分析](https://abox.tools/zh-TW/gif-analyzer/): 幀、延時、調色盤,以及每個位元組的去向。 ## 常見問題 ### 我的影片會被傳到哪裡去嗎? 不會。它由你自己的瀏覽器在你自己的硬體上讀取和解碼。這個工具沒有服務端,頁面的 `Content-Security-Policy` 裡寫著它允許聯絡的每一個地址,沒有一個屬於本站。你要是寧可自己查也不願聽我們說,拔掉網線,照樣截一幀試試。 ### 「原畫質」到底是什麼意思? 兩件事。一是這張圖按影片本身的解析度儲存,而不是按頁面上預覽的大小,4K 的片子給的就是 3840 x 2160 的圖。二是選了 PNG 的話,這一幀就是從解碼器出來時的樣子,檔案裡裝的正是影片裡裝的畫面,上面沒有再壓一層。對著播放器視窗截圖兩樣都得不到:尺寸是視窗的尺寸,而且是播放器縮放並做完色彩管理之後的畫面。 ### 哪些影片格式可以截幀? MP4、M4V 和 MOV 直接讀,裡面裝什麼都行:H.264、HEVC、AV1 或 VP9,只要你的瀏覽器能解那個編碼。這是精確路徑,工具能點名到具體某一幀。其他瀏覽器能播的東西,最典型的是 WebM,則靠把播放器挪過去、再把它顯示的內容畫下來,一樣能存出原尺寸的圖,但落到的是播放器選的那一幀,而不是你要的那一幀。瀏覽器既讀不了也播不了的檔案,實際上就是 AVI、WMV、FLV 和大多數 MKV,會帶一句說明直接拒掉。 ### 能一幀一幀地挪嗎? MP4 可以,而且是精確的:工具讀的是檔案自己的幀列表,所以方向鍵是在真正存在的那些畫面之間移動,哪怕片子的幀率忽高忽低也一樣,而按三十分之一秒固定步進就會越走越偏。走播放路徑時沒有這份列表,一次操作大約挪一幀,頁面也會明說。 ### 我直拍的手機影片在這裡為什麼是正的? 因為旋轉是特意應用上去的。手機是橫著拍的,然後把「轉四分之一圈」寫進檔案裡,而不是真的把畫素轉過來,所以解碼器交出來的幀是躺著的,每個播放器都會在送到你螢幕的路上把它扶正。跳過這一步的工具,會存下一張時刻沒錯、但躺著的圖。這個工具會從軌道裡讀出旋轉值,在畫任何東西之前先應用。 ### 影片的大小或時長有上限嗎? 工具裡沒有寫死的上限,檔案也不會一次性讀進記憶體,而是幾 MB 幾 MB 地走過去,所以長片子和短片子開得一樣快。你截下的圖在下載之前留在頁面裡,所以真正的天花板是幾百張 4K PNG,而不是影片本身。 ### 截下來的圖之後能縮放或裁剪嗎? 這裡不行,隔壁可以。這個工具只是把幀原樣存下來;改尺寸或改形狀是另一件事,裡面有自己的取捨,[圖片尺寸調整](https://abox.tools/zh-TW/resize-image/)兩件都能做,同樣什麼都不上傳。想在不改畫面的前提下把檔案變小,用[圖片壓縮](https://abox.tools/zh-TW/compress-image/)。 ### 它免費嗎,需要註冊嗎? 免費,沒有帳號,不用登入,沒有試用期,也沒有水印。本站帶廣告,經費就是從那裡來的,廣告拿不到任何關於你影片的資訊。 ## 這條隱私承諾怎麼核實 - **你的影片沒有出去的路。** Content-Security-Policy 裡寫著這個頁面允許聯絡的每一個地址,沒有一個屬於本站。這裡沒有任何可以收走你檔案的接收端,就算有,程式碼裡也沒有把檔案送過去的東西。 - **這裡不會去取任何東西。** 這個工具壓根就沒有網路功能:沒有地址可填,沒有東西要下載,第一次用也不會拉什麼引擎。碰到你影片的每一個位元組,都是頁面載入時從這個源來的。 - **解碼在本地完成。** 幀要麼走你自己瀏覽器裡的 WebCodecs,要麼走本來就會給你放這個片子的那套播放引擎。畫面畫在這臺機器的 canvas 上,然後直接交給下載。 - **檔案是幾 MB 幾 MB 讀的。** 影片是這裡唯一一種不能保證塞得進記憶體的檔案,所以從來不整個載入。讀取器只取你要的那一幀前後的一小段視窗,這也是兩個 G 的片子和小片子開得一樣快的原因。 - **Google 載入了什麼,又拿不到什麼。** 廣告指令碼和統計指令碼來自 Google。關於你影片的資訊,一條也沒有交給它們,檔案、某一幀、名字、大小、時長、你停在哪一刻,都沒有。讀取、解碼、繪製的每一行程式碼都由這個源提供,也都擺在儲存庫裡。 - **捐助按鈕載入了什麼,又拿不到什麼。** 頁首那個「Buy me a coffee」按鈕由 cdnjs.buymeacoffee.com 的指令碼畫出來,字型取自 Google Fonts。它不過是個連結,不上報訪問,也拿不到關於你或你影片的任何東西。 - **斷網也照樣能用。** 斷開網路,這個頁面上的一切照常工作。這是最省事的一條證明。 **你可以自己核對。**上面這些不用你信。這個頁面是儲存庫裡的模板和配置產生出來的,構建指令碼你能讀,也能自己跑一遍,跑出來的結果就提交在 `dist` 分支上。拿實際發給你的內容,跟你自己從原始碼構建出來的結果對一遍就知道了: https://github.com/A-Box-of-Tools/website 最值得先讀的幾個檔案:`config/site.toml` 裡是 Content-Security-Policy,`src/shared/mp4-reader.js` 是在 MP4 裡找出各幀的讀取器,`src/frames.js` 是負責把你要的那一幀解出來的部分。兩者都沒有引入任何能發出請求的東西。
怎麼把影片裡的一幀存成圖片 按原解析度從片子裡取一張靜幀:為什麼暫停後的截圖不是同一張圖、該存成什麼格式,以及怎麼正好停在你想要的那一幀。
不會。它由你自己的瀏覽器在你自己的硬體上讀取和解碼。這個工具沒有服務端,頁面的 Content-Security-Policy 裡寫著它允許聯絡的每一個地址,沒有一個屬於本站。你要是寧可自己查也不願聽我們說,拔掉網線,照樣截一幀試試。
兩件事。一是這張圖按影片本身的解析度儲存,而不是按頁面上預覽的大小,4K 的片子給的就是 3840 x 2160 的圖。二是選了 PNG 的話,這一幀就是從解碼器出來時的樣子,檔案裡裝的正是影片裡裝的畫面,上面沒有再壓一層。對著播放器視窗截圖兩樣都得不到:尺寸是視窗的尺寸,而且是播放器縮放並做完色彩管理之後的畫面。
MP4、M4V 和 MOV 直接讀,裡面裝什麼都行:H.264、HEVC、AV1 或 VP9,只要你的瀏覽器能解那個編碼。這是精確路徑,工具能點名到具體某一幀。其他瀏覽器能播的東西,最典型的是 WebM,則靠把播放器挪過去、再把它顯示的內容畫下來,一樣能存出原尺寸的圖,但落到的是播放器選的那一幀,而不是你要的那一幀。瀏覽器既讀不了也播不了的檔案,實際上就是 AVI、WMV、FLV 和大多數 MKV,會帶一句說明直接拒掉。
MP4 可以,而且是精確的:工具讀的是檔案自己的幀列表,所以方向鍵是在真正存在的那些畫面之間移動,哪怕片子的幀率忽高忽低也一樣,而按三十分之一秒固定步進就會越走越偏。走播放路徑時沒有這份列表,一次操作大約挪一幀,頁面也會明說。
因為旋轉是特意應用上去的。手機是橫著拍的,然後把「轉四分之一圈」寫進檔案裡,而不是真的把畫素轉過來,所以解碼器交出來的幀是躺著的,每個播放器都會在送到你螢幕的路上把它扶正。跳過這一步的工具,會存下一張時刻沒錯、但躺著的圖。這個工具會從軌道裡讀出旋轉值,在畫任何東西之前先應用。
工具裡沒有寫死的上限,檔案也不會一次性讀進記憶體,而是幾 MB 幾 MB 地走過去,所以長片子和短片子開得一樣快。你截下的圖在下載之前留在頁面裡,所以真正的天花板是幾百張 4K PNG,而不是影片本身。
這裡不行,隔壁可以。這個工具只是把幀原樣存下來;改尺寸或改形狀是另一件事,裡面有自己的取捨,圖片尺寸調整兩件都能做,同樣什麼都不上傳。想在不改畫面的前提下把檔案變小,用圖片壓縮。
免費,沒有帳號,不用登入,沒有試用期,也沒有水印。本站帶廣告,經費就是從那裡來的,廣告拿不到任何關於你影片的資訊。