# フレームを抽出

> 動画から 1 フレームを劣化のない PNG として取り出します。最初、最後、タイムスタンプ、正確なフレーム番号で指定でき、クリップのつなぎやサムネイル作りに使えます。

Source: https://nodaro.ai/ja/docs/nodes/image/extract-frame

**フレームを抽出**（Extract Frame）ノードは、動画から 1 フレームを取り出し、PNG 画像として返します。取り出すフレームは、最初のフレーム、最後のフレーム、タイムスタンプの位置のフレーム、正確なフレーム番号から選べます。取り出した静止画は、どの画像ノードにも渡せます。たとえば、次のクリップの開始フレームとして使えます。

- Found in: Image › Edit & Retouch
- Output: image
- API type: `extract-frame`

## 使いどころ
- クリップをつなぎます。生成したクリップの最後のフレームを次のクリップの開始フレームに使うと、ショットからショットへストーリーが続きます。
- サムネイルを作ります。動画を投稿する前に、その動画を代表する静止画を取り出します。
- ある瞬間を再利用します。長い動画から 1 フレームを取り出して編集したり、[**画像生成**（Generate Image）](https://nodaro.ai/docs/nodes/image/generate-image)でリファレンスとして使ったりします。
- ノードをつないでいるときに、上流の動画が何から始まるかを確認します。

## クイックスタート
### ノードを追加する
キャンバス上で Tab を押し、**画像 › 編集とレタッチ › フレームを抽出**を選びます。

### 動画を接続する
[**動画生成**（Generate Video）](https://nodaro.ai/docs/nodes/video/generate-video)や[**動画アップロード**（Upload Video）](https://nodaro.ai/docs/nodes/video/upload-video)などの動画ノードから、**動画**入力までドラッグします。

### フレームを選ぶ
設定パネルを開き、**フレームの選択**で**最後のフレーム**などのモードを選びます。

### 実行する
ノードの**実行**をクリックします。フレームが画像としてノードに表示されます。

Workflow: クリップ 1 の最後のフレームがクリップ 2 の最初のフレームになるので、2 本目のクリップは 1 本目が終わったところから続きます。

- 動画生成 → フレームを抽出 (動画)
- フレームを抽出 → 動画生成 (開始フレーム)

## 入力
| 入力 | 接続できるノード | 説明 |
| --- | --- | --- |
| **動画** | 動画生成、動画アップロード、**動画のトリミング**（Trim Video）などの動画ノード | フレームを取り出す動画です。必須です。 |

出力の**画像**は、取り出したフレームです。形式は PNG で、解像度は動画と同じです。

## 設定
| 設定 | 説明 |
| --- | --- |
| **フレームの選択** | 取り出すフレームです。デフォルトは**最初のフレーム**です。[フレームモード](#frame-modes)を参照してください。 |
| **タイムスタンプ（秒）** | **指定したタイムスタンプ（秒）**で使います。動画の先頭から何秒の位置かを指定します。`2.5` のような小数も使えます。動画の範囲外の時間は、最も近い有効なフレームに移動します。 |
| **シーク位置（秒）** | **最も近いキーフレーム**で使います。検索を始める位置です。`0` は最初のキーフレームを意味します。 |
| **フレームインデックス（先頭から）** | **先頭からのフレーム番号**で使います。取り出すフレームの番号で、`0` が最初のフレームです。 |
| **末尾から遡るフレーム数** | **末尾からのフレーム番号**で使います。終わりから何フレーム前かを指定します。`0` が最後のフレーム、`1` が最後から 2 番目のフレームです。 |

## フレームモード
| モード | 取り出すフレーム | 使う場面 |
| --- | --- | --- |
| **最初のフレーム** | 最初のフレーム | 冒頭の画像を確認したり、再利用したりしたいとき。 |
| **最後のフレーム** | 最終フレーム | このクリップが終わったところから、次のクリップを始めるとき。 |
| **指定したタイムスタンプ（秒）** | 秒単位で指定した時間のフレーム | 開始から `2.5` 秒など、取り出す瞬間がわかっているとき。 |
| **先頭からのフレーム番号** | `0` から数えて、指定した番号のフレーム | フレーム 24 など、正確なフレームが必要なとき。24 fps のクリップでは、フレーム 24 は開始から 1 秒の位置です。 |
| **末尾からのフレーム番号** | 終わりから、指定したフレーム数だけ前のフレーム | クリップの長さを知らなくても、「終わりから 10 フレーム前」を取り出したいとき。 |
| **最も近いキーフレーム** | 指定した時間か、それより後にある最初のキーフレーム | 速度が重要なとき、または動画のビットレートが高いとき。キーフレームは、キーフレームの間にあるフレームよりも速く読み取れます。 |

フレーム番号で指定する 2 つのモードでは、ノードが動画のフレームレートと長さを読み取るので、正確なフレームを見つけられます。

## クレジット
抽出は 1 回につき 10 クレジットです。モードや動画の長さによって変わりません。

## トラブルシューティング
**最後のフレームがフェードしている、またはぼやけている**：クリップによっては、ディゾルブやアーティファクトで終わるものがあります。**末尾からのフレーム番号**を `5` などの小さな値で使い、終わる直前のきれいなフレームを取り出してください。

**フレーム番号のモードが失敗する**：**先頭からのフレーム番号**と**末尾からのフレーム番号**には、動画のフレームレートとフレーム数が必要です。ノードがファイルからそれらを読み取れない場合、間違ったフレームを返すのではなく、実行が失敗します。その動画には、**指定したタイムスタンプ（秒）**など、時間で指定するモードを使ってください。

## ヒント
- **PNG なので細部まで残る**：フレームはロスレスなので、圧縮によるアーティファクトを加えずに、アップスケールや編集をしたり、続きの動画の最初のフレームとして使ったりできます。
- **サイズの変更はほかのノードで**：フレームの解像度は動画と同じです。より大きな静止画が必要な場合は、[**画像をアップスケール**（Upscale Image）](https://nodaro.ai/docs/nodes/image/upscale-image)に送ります。小さくしたい場合は、先に[**動画をリサイズ**（Resize Video）](https://nodaro.ai/docs/nodes/video/resize-video)で動画のサイズを変更します。
- **ある瞬間をリミックスする**：1 本のクリップから静止画を取り出し、[画像生成](https://nodaro.ai/docs/nodes/image/generate-image)や[**画像修正**（Modify Image）](https://nodaro.ai/docs/nodes/image/modify-image)でスタイルを変えます。それを動画にしてから、その結果を[**動画を結合**（Combine Videos）](https://nodaro.ai/docs/nodes/video/combine-videos)で元の動画とつなぎます。

## Frequently asked questions

### 動画の最後のフレームを取り出すにはどうすればよいですか？

「フレームの選択」を「最後のフレーム」に設定します。ノードは最後のフレームを PNG で返すので、次のクリップの開始フレームとして使えます。

### 「フレームを抽出」ノードには何クレジットかかりますか？

1 フレームにつき 10 クレジットです。モードや動画の長さによって変わりません。

### 抽出したフレームの形式とサイズはどうなりますか？

ロスレス（可逆圧縮）の PNG で、解像度は動画と同じです。もっと大きな静止画が必要な場合は、フレームを「画像をアップスケール」ノードに送ってください。

### タイムスタンプが動画の終わりを過ぎている場合はどうなりますか？

動画の範囲外のタイムスタンプは、最も近い有効なフレームに移動されます。そのため、この場合もノードは画像を返します。

### フェードがかかった最後のフレームを避けるにはどうすればよいですか？

クリップによっては、ディゾルブで終わるものがあります。「末尾からのフレーム番号」を 5 などの小さな数で使い、終わりより少し前のフレームを取り出してください。
