動画フレームを抽出

動画から好きな場面を静止画として保存。小さいプレビューのサイズではなく、デコードできる元の解像度でフレームを抽出します。

欲しい瞬間で動画を止め、そのフレームを動画自体の解像度でPNG・JPG・WebPとして保存します。4Kの元動画なら、画面上のプレビューの大きさに関係なく3840 × 2160の画像になります。フレームはWebCodecsでファイルから改めてデコードするので、プレーヤーのスクリーンショットではなく本物のフレームで、スマホ動画の回転情報も反映されます。静止画の保存はエンコードの書き出し回数に数えられません。

動画をここにドロップ複数のファイルをまとめて処理できます
アップロードなし · この端末で処理

どのフレームが、どの大きさで保存されるか

動画の各フレームは短い時間だけ表示されます。時刻tで保存すると、Nerulioはt以前に始まる最後のフレーム、つまりその瞬間に画面に出ているフレームをデコードします。29.97fpsでは1フレームが33.4msなので、その範囲内のどの時刻でも同じ絵になります。

画像は、ファイルの回転情報を適用した後のデコード済みフレームの全体サイズです。そのため横向きに保存された縦長のスマホ動画も正しい向きで出てきます。PNGはすべての画素をそのまま保ち、JPGとWebPは品質0.94で書かれ、写真のようなフレームではずっと小さくなります。

⏮・⏭ボタンと、切り出しハンドル上の矢印キーは1/30秒ずつ動きます(Shiftで1秒)。30fpsの動画なら1フレームですが、60fpsでは1フレームおきになり、24fpsでは2回押しても同じフレームのことがあります。

表示時刻
フレームが表示され始める時刻。次のフレームが始まるまで画面に残ります。
元の解像度
映像トラックに符号化された絵の大きさ(例:3840 × 2160)。プレビューの大きさとは無関係です。
回転情報
保存された絵を90°・180°・270°回して表示するよう示すスマホ動画の情報。

例:29.97fpsの4K動画、12.345秒のフレーム

0秒から始まる固定フレームレートの動画なら:

フレームの長さ        1 ÷ 29.97 = 0.0334 s
フレーム番号          floor(12.345 × 29.97) = floor(369.98) = 369
そのフレームの表示    369 ÷ 29.97 = 12.312 s  から  370 ÷ 29.97 = 12.346 s まで
保存される画像        3840 × 2160 px
生の画素              3840 × 2160 × 4 bytes = 33.2 MB(PNG・JPGのエンコード前)
⏭を1回               12.345 + 0.0333 = 12.378 s → 370番のフレーム

PNGはそのフレームの全画素を保ちます。細かい4KのフレームならJPGやWebPのほうがずっと小さく、JPGはテストでも確認しています。

結果の確認

  • 結果の欄に保存した画像のサイズが出ます。ファイルの行にある元の解像度と同じはずです。
  • 保存した画像を100 %で拡大します。小さなプレビューではなく、動画と同じ細部が見えるはずです。
  • 瞬間が重要なら⏮・⏭で動かして保存し直します。時計に表示された時刻が使われます。

トラブルシューティング

症状考えられる原因確認方法対処
フレームがぼやけている元のフレーム自体のモーションブラーや圧縮。取り出しでぼけが加わることはない前後に1フレームずつ動かすと、よりくっきりしたフレームがあるかもしれない動きが止まったフレームを選ぶ
「No frame at this timestamp」やデコーダーのエラーで止まるこのブラウザが映像コーデックをデコードできない(HEVC・ProResなど)、または時刻が最後のフレームより後ffprobeでコーデックを見て、少し前の時刻で試すデコードできるブラウザを使うか、H.264で書き出し直す
画像が横向きになるファイルに回転情報がない、または読み込み側が使わない形式スマホ標準のプレーヤーと比べる保存した画像を画像エディターで回転
スマホのギャラリーより色が平板HDR動画は描画時に8ビット画像へ変換され、その変換はブラウザが行うHDRで撮影したか確認静止画が大事ならSDRで撮るか、後で画像を補正
ファイルが思ったより大きい細かい4KフレームのPNG結果の欄の容量JPG・WebPを選ぶか、画像を圧縮

ほかの方法

方法こんなときに向いています
FFmpeg:ffmpeg -ss 12.345 -i in.mp4 -frames:v 1 frame.png決まった時刻のフレームをスクリプトでたくさん取り出すとき。
一時停止したプレーヤーのスクリーンショット共有用には手早いが、画面上のプレーヤーの大きさに制限され、その大きさに拡大縮小される。
動画をGIFに1フレームでは足りず、短いループが欲しいとき。

この方法の限界

  • 1回の保存で1フレームだけです。N秒ごとの一括書き出しはありません。
  • HDRのフレームは8ビット画像になり、HDRの静止画形式では書き出しません。

バージョンと出典

tests/media-browser.mjsで、Chromium 153とFirefox 155を使って確認しました。3840 × 2160のテスト動画の1秒のフレームが3840 × 2160のPNGとして保存され、JPEGでもサイズは同じで容量は小さくなりました。フレームはMediabunny 1.58.1とWebCodecsでデコードし、WebCodecsがない場合はブラウザ自身の動画プレーヤーから元の大きさで描画します。

参照した公式ドキュメント

動画フレームを抽出

動画から好きな場面を静止画として保存。小さいプレビューのサイズではなく、デコードできる元の解像度でフレームを抽出します。

使い方

  1. 動画を開いて目的のフレームへ移動
  2. 一時停止して場面を確認
  3. 静止画を保存し画像サイズを確認

対応形式

MP4 / WebM / MOV → PNG — 読み込み・書き出しはブラウザの対応状況によります。

このツールでできること

プレビューサイズとは別に、デコードしたフレームを元解像度で保存します。

処理方式と検証状況

advanced · WebCodecs source-resolution frame / video fallback. 品質検証中です。Pro・Flagship水準はまだ実証されていません。

書き出す前に

高速カットは範囲内のキーフレームに短縮します。精密モードは再エンコードし、コーデック対応は環境次第です。可能なら端末の一時保存を使います。互換録画の短時間制限は残ります。

よくある質問

対応サイズは何で決まりますか?

端末のメモリ・保存容量・コーデック対応によります。テスト例はすべてのファイルの動作保証ではありません。

ファイルはアップロードされますか?

このツールで開いたファイルはアップロードせず端末で処理します。コミュニティの投稿に明示的に添付する画像は別途アップロードされます。一部のエンジンやモデルは外部から取得するため、IPアドレスなどの接続情報は配信元に伝わります。

作業は自動保存されますか?

いいえ。画像と編集状態はこのタブに保持され、メディア出力は端末の一時保存を利用する場合があります。言語を変えても作業は残りますが、再読み込み、タブを閉じる操作、別のページへの移動で失われることがあります。