# 動画オーバーレイ

> 最大 20 枚の画像を、それぞれ指定した時間だけ動画に重ねます。配置はカード、コーナーバッジ、全画面、カスタムから選べます。ライブプレビューで確認でき、オーディオはそのまま残ります。

Source: https://nodaro.ai/ja/docs/nodes/video/video-overlay

**動画オーバーレイ**（Video Overlay）ノードは、動画の上に画像を重ね、それぞれを指定した時間だけ表示します。ロゴ、商品写真、スクリーンショット、ナレーションに合わせたカードなどに使います。ノードは画像ファイルをそのまま正確に動画の上に描き、元のオーディオを残し、ノード上にライブプレビューを表示します。これらはすべて、AI モデルを使わずに行われます。

- Found in: Video › Titles, Graphics & Captions
- API type: `video-overlay`

## 使いどころ
- UGC 広告で、話し手が商品カード、アプリのスクリーンショット、Web ページに触れている間に、それらを表示します。
- 動画全体を通して、ロゴやチャンネルのハンドル名を画面に表示します。
- ピクチャーインピクチャーの静止画、ビフォーアフターの画像、リアクション画像を表示します。
- 商品のクリップに、値札や「NEW」バッジを重ねます。

## クイックスタート
### ノードを追加する
キャンバス上で Tab を押し、**動画 › タイトル、グラフィック、字幕 › 動画オーバーレイ**を選びます。

### 動画と画像を接続する
ベースの動画を**動画**入力に接続します。各画像を、それぞれのレイヤーの入力（**レイヤー 1**、**レイヤー 2** など）に接続します。ノードには、最初はレイヤーの入力が 4 つあります。

### 各レイヤーのタイミングと位置を決める
設定パネルを開きます。レイヤーごとに**開始（秒）**と**終了（秒）**を設定し、**配置**を選びます。ノードのプレビューでレイヤーをドラッグすると移動でき、角のハンドルを引っ張るとサイズを変えられます。

### 実行する
**実行**をクリックします。ノードが、すべてのレイヤーをそれぞれの時間に表示した動画をレンダリングします。プレビューのラベルが、**プレビュー**から**結果**に変わります。

Workflow: スクリーンショットがカードとしてポップアップし、ロゴは隅に表示され続けます。その上に字幕を重ねてから、動画を投稿します。

- 動画アップロード → 動画オーバーレイ (動画)
- 画像アップロード → 動画オーバーレイ (レイヤー 1)
- 画像アップロード → 動画オーバーレイ (レイヤー 2)
- 動画オーバーレイ → 字幕を追加 (動画)
- 字幕を追加 → TikTok 投稿

## 入力
| 入力 | 接続できるノード | 説明 |
| --- | --- | --- |
| **動画** | **動画アップロード**（Upload Video）、**動画生成**（Generate Video）などの動画ノード | ベースの動画です。必須です。 |
| **レイヤー 1**〜**レイヤー 12** | **画像アップロード**（Upload Image）、**画像生成**（Generate Image）、**画像オーバーレイ**（Image Overlay）などの画像ノード | レイヤーごとに 1 枚の画像です。レイヤー 1 が 1 番目の入力、レイヤー 2 が 2 番目の入力というように続きます。 |

出力の**動画**は、レイヤーを描き込んだ動画で、形式は MP4 です。

設定パネルの **+ レイヤー**と **− レイヤー**ボタンで、表示するレイヤーの入力の数を 1〜12 の範囲で変えられます。番号の大きい入力に接続したときも、数は自動で増えます。

## ライブプレビュー
ベースの動画を接続すると、ノードにその動画の 1 フレームが表示され、レンダリング時と同じ位置にレイヤーが描かれます。

- **レイヤーを選ぶ**：設定パネルの**タイムライン**で、レイヤーのバーをクリックします。プレビューはそのレイヤーの開始位置に移動し、その時点で表示されているレイヤーだけを表示します。
- **レイヤーをドラッグする**：ドラッグで移動し、角のハンドルを引っ張ってサイズを変えます。ドラッグするたびに新しいパーセント値がレイヤーの設定に書き込まれるので、プレビューと実行では同じ数値が使われます。
- **結果と結果（古い）**：実行が終わると、ノードに**結果**と表示されます。その後、レイヤーを動かしたり別の画像を接続したりして設定を変えると、もう一度実行するまで、ラベルは**結果（古い）**になります。

## レイヤーの設定
設定パネルでは、各レイヤーに専用のカードがあり、**レイヤー 1**、**レイヤー 2** などの見出しが付いています。

| 設定 | 説明 |
| --- | --- |
| **開始（秒）** | レイヤーが表示される時点を、動画の先頭からの秒数で指定します。デフォルトは `0` です。 |
| **終了（秒）** | レイヤーが消える時点です。**開始（秒）**より後にする必要があります。空欄にすると、動画の最後までレイヤーが表示されます。 |
| **配置** | **カード**、**コーナーバッジ**、**全画面**、**カスタム**のいずれかです。接続したまま変更していないレイヤーは、動画全体を通して右下のコーナーバッジになります。 |
| **コーナー** | **コーナーバッジ**用です。**左上**、**右上**、**左下**、**右下**（デフォルト）のいずれかです。 |
| **アンカー**、**オフセット X**、**オフセット Y**、**幅**、**高さ（フレームに対する %、任意）**、**フィット（高さを指定した場合）** | **カスタム**用です。[カスタムのボックス](#custom-boxes)を参照してください。 |
| **レイヤーの順序（z）** | 0〜100 です。値が大きいレイヤーほど上に描かれます。空欄の場合はレイヤー番号が使われるので、レイヤー 1 が最も下になります。プレビューの上下のボタンでも設定できます。 |
| **不透明度** | 0〜100% です。デフォルトは 100% です。 |
| **表示・非表示をアニメーション** | デフォルトでオンです。レイヤーは 0.15 秒かけて、大きさを 96% から 100% に広げながらフェードインし、終了時にはその逆の動きをします。 |

### 配置
位置とサイズは、すべて出力フレームに対するパーセントです。

| 配置 | レイヤーの位置 |
| --- | --- |
| **カード** | 中央揃えで、中心より 4% 上に置かれ、フレームの 78% × 60% の範囲内に収まります。画像のアスペクト比は保たれます。 |
| **コーナーバッジ** | フレームの幅の 18% の大きさで、選んだ隅から 4% 内側に配置されます。 |
| **全画面** | フレーム全体を覆います。画像は、フレームを埋めるように切り抜かれます。 |
| **カスタム** | 自分で指定したボックスです。 |

**カード**はフレームの中央に重なるため、9:16 の自撮り動画では話し手の顔の上に来ます。これは意図的なもので、話している人の上に商品カードがポップアップするようにしています。被写体を隠してはいけないロゴやバッジは、コーナーバッジかカスタムのボックスに配置します。

### カスタムのボックス
- **アンカー**は、フレーム上でレイヤーを固定する 9 つの位置のいずれかです。
- **オフセット X** と**オフセット Y** は、レイヤーをアンカーから移動させます。範囲は、フレームの幅と高さの −100〜100% です。右または下のアンカーでは、オフセットを負の値にするとレイヤーが内側に移動します。
- **幅**は、フレームの幅の 1〜100% です。
- **高さ（フレームに対する %、任意）**は、フレームの高さの 1〜100% です。指定しない場合、高さは画像のアスペクト比に従います。
- **フィット（高さを指定した場合）**は、画像でボックスをどう埋めるかを決めます。**全体を収める**は、画像全体を中央に表示します。**領域を埋める**は、ボックスを埋めるように画像を切り抜きます。

ボックスの項目を 1 つでも設定すると、プリセットの配置を使っているレイヤーは**カスタム**に変わります。プレビューでプリセットの配置のレイヤーをドラッグしたり、サイズを変えたりした場合も同じです。高さがアスペクト比に従う縦長の画像は、常にフレーム内に収まるように調整されます。たとえば、1080×1920 の動画で幅 60% に設定した 1:10 の画像は、192×1920 で描かれます。描画サイズは偶数ピクセルに切り下げられ、最小でも 2×2 です。

### タイミングのルール
- 時間は、動画の先頭からの秒数で、0〜3,600 です。入力した精度のまま保持されますが、レンダリングでは動画のフレームの区切りに合わせて配置されるため、レイヤーが最大 1 フレーム早く、または遅く表示されることがあります。
- **終了（秒）**が動画の終わりより後のレイヤーは、動画の終わりで切り詰められます。
- 動画の終わりと同時か、それより後に始まるレイヤーはスキップされ、その画像はダウンロードされません。
- 0.3 秒より短いレイヤーでは、フェードインとフェードアウトに、それぞれレイヤーの長さの半分が使われます。

パネルは、ブラウザーが読み取った長さを使って、切り詰められるレイヤーやスキップされるレイヤーについて入力中に警告します。この長さは、動画本来の長さと数百分の 1 秒ずれることがあるため、最終的な判断は実行時の警告に従ってください。

## 出力の設定
| 設定 | 説明 |
| --- | --- |
| **出力のアスペクト比** | **動画と同じ**（デフォルト）、`16:9`（1920×1080）、`9:16`（1080×1920）、`1:1`（1080×1080）、`4:5`（1080×1350）のいずれかです。出力のアスペクト比を指定すると、レイヤーのパーセントはその新しいフレームに対する値になります。 |
| **動画のフィット** | 出力のアスペクト比を指定した場合のみ。**領域を埋める**（デフォルト）は、フレームを埋めるように動画を切り抜きます。**全体を収める**は、動画全体を表示し、余白を加えます。 |
| **余白の色** | **全体を収める**の場合のみ。余白の色です。デフォルトは黒です。 |

出力のアスペクト比を指定しない場合、結果は動画本来の表示サイズとフレームレートを保ちます。横向きに保存されたスマートフォンのクリップは正しい向きでレンダリングされ、正方形でないピクセルは補正されます。また、奇数の寸法は偶数に切り下げられるため、1079×1919 の元動画は 1078×1918 でレンダリングされます。

結果は H.264 の MP4 で、ダウンロードが完了する前に再生を始められます。ベース動画のオーディオトラックは最初の 1 本だけが残り、オーディオのない動画は無音のままです。

## 制限
- **レイヤー**：1 回の実行につき 1〜20 です。画像があるレイヤーが 20 を超えるノードは、実行前に拒否され、**実行**ボタンにその旨が表示されます。レイヤーを削除して 20 以下に戻してください。残ったレイヤーの番号は変わりません。レイヤーが知らないうちに除外されることはなく、料金もかかりません。
- **画像**：PNG、JPEG、WebP です。1 枚あたり 25 MB まで、合計 100 MB まで、長辺は 8,192 ピクセルまで、合計 400 メガピクセルまでです。カメラが記録した写真の向きが適用されます。
- **SVG は受け付けない**：先に[画像オーバーレイ](https://nodaro.ai/docs/nodes/image/image-overlay)で SVG を PNG に変換してください。
- **アニメーション画像**：アニメーション WebP や APNG などは、最初のフレームが表示されます。
- **ベースは動画であること**：オーディオファイル、画像、`.mp4` として保存された Web ページは、「The base input is not a video」というエラーで失敗します。
- **レンダリング時間**：レンダリングは 10 分で停止します。
- **API のレート**：ユーザーごとに 1 分あたり 30 リクエストまでです。

## 警告
実行が成功しても、警告が報告されることがあります。設定パネルでは、警告が**前回の実行**の 1 行にまとめて表示されます。

| 警告 | API コード | 意味 |
| --- | --- | --- |
| 切り詰め | `clipped` | レイヤーの終了が動画の終わりより後だったため、動画の終わりまで表示されました。 |
| スキップ | `skipped` | レイヤーの開始が動画の終わりと同時か、それより後だったため、描画されませんでした。 |
| アニメーション画像 | `animated_first_frame` | 画像がアニメーション WebP だったため、最初のフレームが使われました。 |
| オーディオの再エンコード | `audio_reencoded` | 動画のオーディオをそのまま MP4 にコピーできなかったため、AAC に再エンコードされました。 |

すべてのレイヤーが動画の終わりより後に始まる場合は、警告ではなく実行が失敗し、「Every layer starts after the video ends」というメッセージが表示されます。レイヤーの画像をダウンロードできない場合も、実行は失敗します。たとえば「Layer 3: image could not be fetched」と表示されます。

## クレジット
動画オーバーレイは、レイヤーの数や動画の長さにかかわらず、1 回の実行につき 20 クレジットです。失敗した実行には料金がかかりません。セルフホスティングの Community エディションにはクレジットがなく、ノードは API キーなしで実行できます。

## 例：話している人の上に商品カードを表示する
9:16 の自撮り動画に 3 枚の画像を重ね、話し手がそれぞれに触れている間に表示します。

| レイヤー | 画像 | 開始（秒） | 終了（秒） | 配置 |
| --- | --- | --- | --- | --- |
| 1 | pricing-page.png | 1.2 | 2.6 | カード |
| 2 | dashboard.png | 3.0 | 4.4 | カード |
| 3 | logo.png | 0 | 最後まで | コーナーバッジ、右上 |

1080×1920 の動画では、各カードのボックスは、(119, 307) の位置にある 842×1152 ピクセルの領域です。アスペクト比 1:2 のスクリーンショットは、その中の中央に 576×1152 ピクセルで描かれます。

API で同じリクエストを送る場合は、`POST /v1/video-overlay` を使います。

```json
{
"videoUrl": "https://example.com/selfie.mp4",
"layers": [
{ "imageUrl": "https://example.com/pricing-page.png", "start": 1.2, "end": 2.6, "preset": "card" },
{ "imageUrl": "https://example.com/dashboard.png", "start": 3.0, "end": 4.4, "preset": "card" },
{ "imageUrl": "https://example.com/logo.png", "start": 0, "preset": "corner-badge", "corner": "top-right" }
]
}
```

AI アシスタントは `overlay_images` MCP ツールを使います。このツールでは、各レイヤーに `url` か `asset_id` を指定します。コマンドラインからは、`nodaro media video-overlay` を使います。

## ヒント
- **カードは短く、重ならないようにする**：カードの表示は 1〜2 秒にします。カード同士の表示時間が重ならないようにして、画面には一度に 1 枚だけを表示します。
- **長く表示するレイヤーは隅に置く**：長い時間表示し続けるロゴ、ハンドル名、価格は、話し手から離れたコーナーバッジかカスタムのボックスに配置します。
- **ロゴには透過 PNG を使う**：不透明な JPEG は、長方形のまま配置されます。
- **動画本来のフレームを保つ**：**出力のアスペクト比**は、元の動画と異なるフレームが必要なときだけ設定します。
- **先にカットする**：ベースの動画を短くするには、動画オーバーレイの前に[**動画のトリミング**（Trim Video）](https://nodaro.ai/docs/nodes/video/trim-video)を使います。
- **字幕は後から付ける**：結果を[**字幕を追加**（Add Captions）](https://nodaro.ai/docs/nodes/video/add-captions)に接続します。レイヤーは字幕の下に表示されます。
- **バッジは先にデザインする**：[画像オーバーレイ](https://nodaro.ai/docs/nodes/image/image-overlay)の結果をレイヤーの入力に接続すると、テキスト、QR コード、デザインしたバッジを動画に載せられます。

## Frequently asked questions

### 動画オーバーレイでは、1 本の動画に何枚の画像を配置できますか？

1 回の実行につき、最大 20 レイヤーです。キャンバス上のノードには、画像を接続するためのレイヤーの入力が最大 12 個あります。レイヤー 13〜20 には、API、MCP、テンプレートで設定した画像 URL を使います。

### 動画オーバーレイで、動画のオーディオは変わりますか？

いいえ。ベース動画のオーディオはそのまま残ります。AAC、MP3、AC-3、Opus の場合はそのままコピーされ、それ以外の場合は AAC に再エンコードされます。再エンコードされたことは、実行時に警告として報告されます。

### カードが話し手の顔に重なってしまうのはなぜですか？

「カード」の配置は、意図的にフレームの中央に重なるようになっています。話している人の上に商品カードがポップアップするようにするためです。被写体を隠してはいけないロゴやバッジには、「コーナーバッジ」か「カスタム」のボックスを使います。

### レイヤーには、どの画像形式を使えますか？

PNG、JPEG、WebP を使えます。サイズは 1 枚あたり 25 MB まで、合計 100 MB までです。SVG は受け付けないので、先に「画像オーバーレイ」ノードで PNG に変換してください。アニメーション画像は、最初のフレームが表示されます。

### 動画オーバーレイには何クレジットかかりますか？

レイヤーの数や動画の長さにかかわらず、1 回の実行につき 20 クレジットです。AI モデルは実行されません。セルフホスティングの Community エディションでは、クレジットも API キーも使わずにノードを実行できます。
