どのフレームが、どの大きさで保存されるか
動画の各フレームは短い時間だけ表示されます。時刻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がない場合はブラウザ自身の動画プレーヤーから元の大きさで描画します。
参照した公式ドキュメント
動画フレームを抽出
動画から好きな場面を静止画として保存。小さいプレビューのサイズではなく、デコードできる元の解像度でフレームを抽出します。
使い方
- 動画を開いて目的のフレームへ移動
- 一時停止して場面を確認
- 静止画を保存し画像サイズを確認
対応形式
MP4 / WebM / MOV → PNG — 読み込み・書き出しはブラウザの対応状況によります。
このツールでできること
プレビューサイズとは別に、デコードしたフレームを元解像度で保存します。
処理方式と検証状況
advanced · WebCodecs source-resolution frame / video fallback. 品質検証中です。Pro・Flagship水準はまだ実証されていません。
書き出す前に
高速カットは範囲内のキーフレームに短縮します。精密モードは再エンコードし、コーデック対応は環境次第です。可能なら端末の一時保存を使います。互換録画の短時間制限は残ります。
よくある質問
対応サイズは何で決まりますか?
端末のメモリ・保存容量・コーデック対応によります。テスト例はすべてのファイルの動作保証ではありません。
ファイルはアップロードされますか?
このツールで開いたファイルはアップロードせず端末で処理します。コミュニティの投稿に明示的に添付する画像は別途アップロードされます。一部のエンジンやモデルは外部から取得するため、IPアドレスなどの接続情報は配信元に伝わります。
作業は自動保存されますか?
いいえ。画像と編集状態はこのタブに保持され、メディア出力は端末の一時保存を利用する場合があります。言語を変えても作業は残りますが、再読み込み、タブを閉じる操作、別のページへの移動で失われることがあります。