動画
Videos API によるキャラクター置き換え。動画と新しいキャラクターの画像を送ると、動き・構図・声はそのままに、同じショットがそのキャラクターで返ってきます。キャラクターとシーンをタグ付けしたプロンプトからの動画ショットも。リクエスト、ポーリング、料金、利用地域、制限を説明します。
Lovely Router は OpenAI と同じ形の Videos API で動画を作ります。POST /v1/videos でジョブを開始すると動画オブジェクトが返るので、completed になるまでポーリングし、/v1/videos/{id}/content から mp4 をダウンロードします。コードを書かずに試すなら Playground を使ってください。動画をアップロードするか X で探し、画像をアップロードするか好きな画像モデルに描かせ、選んだチャットモデルにキャラクターとシーンのプロンプトを改善させられます。各ステップは対応する API 呼び出しと同じく残高から課金されます。
見ている間も続いていく動画はライブ動画を、曲からミュージックビデオを作るにはミュージックビデオをご覧ください。
モデル#
| モデル | 料金 | 内容 |
|---|---|---|
minimax-h3-character-swap | 生成された動画 1 秒あたり $0.10 | 動画を新しいキャラクターで撮り直します。顔・髪・体型・服装は画像から、動き・構図・カメラワーク・音声は動画から取ります。1 本あたり最大 10 秒。 |
minimax-h3-aftermidnight | 生成された動画 1 秒あたり $0.12 | 同じキャラクター置き換えに、成人向けシーン用の NSFW LoRA(AfterMidnight)を加えたもの。より豊かで親密な背景、無修正の身体。1 本あたり最大 10 秒。 |
minimax-h3-video | レンダリング 1 秒あたり $0.13、2 枚目以降の画像 1 枚ごとに 1 秒あたり $0.06 追加 | キャラクターとシーンをタグ付けしたプロンプトから、音とセリフ付きの動画ショットを作ります。ショットは無料で 1 本につなげられます。1 ショット 5〜15 秒。 |
いずれも MiniMax H3 を使ったモデルで、creative-hosted チャネルグループとして自社の GPU で動いています。MiniMax H3 規約が適用され、すべてのリクエストで consent: true を指定し、規約(EU・英国・韓国・米国で利用しないことを含む)とその順守の責任に同意する必要があります。
キャラクターを置き換える#
元の動画を video、新しいキャラクターの画像を input_reference として送ります。ファイル(multipart)でも URL(http(s) または data:。JSON でも multipart のテキストフィールドでも可)でもかまいません。
curl https://lovelyrouter.com/v1/videos \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-F model=minimax-h3-character-swap \
-F video=@clip.mp4 \
-F input_reference=@character.png \
-F prompt="In front of a weathered concrete wall, soft window light" \
-F consent=true5 秒の動画のレンダリングには約 1 分、10 秒の動画には 2〜3 分ほどかかります(画面が大きいほど時間がかかります)。しばらく使われていなかった場合は、GPU の起動にさらに 1 分ほどかかります。接続が切れてもジョブは続きます。
リクエストのフィールド#
ボディパラメータ
modelstring必須minimax-h3-character-swap。
videofile必須元の動画。MP4、MOV、WebM で最大 80 MB。ファイルまたは http(s) / data: URL で指定します。動き・構図・カメラワーク・音声はそのまま残り、start から最大 10 秒が使われます。
input_referencefile新しいキャラクターの画像。PNG、JPEG、WebP で最大 20 MB。ファイルまたは URL で指定します。1 人だけが写り、顔が見え、均一な光で無地の背景のものが最適です。
character_idstringinput_reference の代わりに、あなたのアカウントの保存したキャラクターを使います:そのターンアラウンドシートが画像になります。どちらか一方だけを送ります。
consentboolean必須true にすると、MiniMax H3 規約とその順守の責任(地域条項を含む)に同意し、動画と画像に写るすべての人が 18 歳以上で、この肖像の使用に同意していることを確認したことになります。
promptstringシーン。場所、光、雰囲気を書きます(最大 4,000 文字)。引き継がれるのは動画の動きだけなので、説明したシーンがそのまま見た目になります。指定しない場合は、モデルが無地の背景を選びます。
secondsnumber動画のうち使う最大秒数(3〜10)。デフォルトは動画全体(最大 10 秒)。
startnumber動画の何秒目から使うか(0〜3600。Playground のトリミングツールが設定します)。デフォルトは 0。
backgroundstringnew(デフォルト):引き継ぐのは動画の動きだけで、場所は prompt で指定します。keep:動画の背景・物・光をそのまま残し、人物だけを置き換えます。prompt は不要です。料金は同じです。
seedinteger同じシードを使うと同じレンダリングを再現できます(0〜2147483647)。デフォルトはランダム。
POST に ?wait=0–300 を付けると、動画が完成するまでリクエストを保持し(完成すれば 200)、時間内に終わらなければ順番待ちのオブジェクトとともに 202 を返します。
保存したキャラクターを使う#
新しいキャラクターは、呼び出しごとに送ることも、保存したキャラクターから使うこともできます:
- 1 回限り:
input_reference——画像。ファイルまたは URL で指定します(上記)。 - 保存済み:
character_id——POST /v1/charactersで保存したキャラクター。そのターンアラウンドシートが画像になります。動画オブジェクトのcharacter_idに表示されます。
curl https://lovelyrouter.com/v1/videos \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-F model=minimax-h3-character-swap \
-F video=@clip.mp4 \
-F character_id=chr_3b9e1f0c7a2d4e58b6c1a9f2 \
-F consent=true両方を送った場合や、あなたのものでない character_id は拒否されます(400 / 404)。
動画まるごと#
POST /v1/videos/replacements は動画をまるごと受け付けます——最長3分、カットや複数の人物があっても大丈夫です。まずショットと登場人物を検出し(1 秒あたり $0.01)、次に各人物をキャラクターに割り当てて(またはそのまま残して)、人物全体か頭部(顔、髪、頭に身につけているもの)だけかを選びます。入れ替える人物がいるショットを再レンダリングし、元の音声に合わせてつなぎ直します。料金は入れ替えた秒数で決まります(SFW モデルは FastH3 Omni でレンダリングし1秒あたり $0.20、AfterMidnight は $0.12)。流れの全体は動画置き換えのエンドポイントを参照してください。Playground は長さに関係なくすべての動画でこれを使います。
動画ショット#
minimax-h3-video はゼロから動画を作ります:POST /v1/videos/shots は、保存したキャラクターとシーンをタグ付けしたプロンプト(@Mia_Wong、@[Night Café])を受け取り、タグ付けされたものがそれぞれ参照画像になります——1 ショット最大 9 枚。引用符の中の言葉は、その直前に最後にタグ付けされたキャラクターが話します。物語のショットを 1 つずつレンダリングし、POST /v1/videos/joins でつなげます(無料)。すべてのフィールド、料金、Playground が絵コンテに使うプロジェクト API は動画ショットのエンドポイントにあります。声のあるキャラクターはその声で話します(1 ショット最大 3 つの声)。レンダリング前に、セリフの外の代名詞は正しいタグに置き換えられます(プロンプトの整理)。
curl https://lovelyrouter.com/v1/videos/shots \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{"model": "minimax-h3-video", "consent": true, "seconds": 5,
"prompt": "In @[Night Café], @Leo looks up as @Mia_Wong sits down: \"You came.\"",
"characters": ["chr_3b9e1f0c7a2d4e58b6c1a9f2", "chr_1e4b7d0a9c3f2e5b8a6d0c1f"],
"scenes": ["scn_5b2d9e0c1a7f4b3e8d6c2a1f"]}'動画オブジェクト#
{
"id": "video_4f9d0c2b8e1a47d6a3c5b7e2",
"object": "video",
"model": "minimax-h3-character-swap",
"status": "completed",
"progress": 100,
"created_at": 1792915200,
"completed_at": 1792915288,
"expires_at": 1793520088,
"seconds": "5.17",
"size": "768x1376",
"prompt": "In front of a weathered concrete wall, soft window light",
"character_id": null,
"error": null,
"url": "https://lovelyrouter.com/v1/videos/video_4f9d0c2b8e1a47d6a3c5b7e2/content",
"charge_usd": 0.3875,
"powered_by": "MiniMax H3"
}status は queued、in_progress、completed、failed、cancelled のいずれかです。失敗した動画には error: {code, message} が付き、課金されません。size は元の動画の向きに合わせ、短辺が 768 ピクセルになります。フレームレートは 24 fps です。
エンドポイント#
| リクエスト | 内容 |
|---|---|
POST /v1/videos | 動画を開始。 |
GET /v1/videos/{id} | 動画オブジェクト。?wait=1–300 を付けると、queued/in_progress から変わるか時間切れになるまで待ちます。 |
GET /v1/videos/{id}/content | mp4 ファイル(Range リクエストに対応しているので、プレーヤーでシークできます)。7 日間保存。 |
GET /v1/videos | 最近の動画(新しい順)。?limit=1–100、次のページは ?after=<id>。 |
DELETE /v1/videos/{id} | 順番待ちの動画をキャンセル(課金なし)、または完了した動画のファイルを削除。 |
料金#
生成された動画の秒数で課金され、1 本あたり 3〜10 秒です(3 秒未満の結果は 3 秒分として課金)。5.2 秒の動画なら $0.52 です。動画を開始すると、かかりうる最大額($1.00、または seconds × 単価)が残高から確保され、完了時に差額が戻ります。失敗・キャンセルした動画は課金されません。
きれいに仕上げるコツ#
- 動画:1 人がはっきり写り、自然なペースで動いているもの。速い動きや、体が大きく隠れる場面は苦手です。音声はそのまま残って口の動きを導くので、話している場面でも口元がずれません。
- 画像:その人だけが写り、顔が見え、均一な光で無地の背景のもの。画像の照明や背景はコピーされませんが、強い色の光は映り込むことがあります。キャラクターシート(同じ人の正面・斜め前・側面・背面を 1 枚にしたもの)は、カメラが人物の周りを動く場面で特に効果的です。描かれるのは 1 人だけです。
- シーン:
promptで場所を説明すると、元の動画に近い見た目になります。例:「a weathered concrete wall, soft window light」。 - 髪の形は動画に従い(動画で三つ編みなら三つ編みのまま)、髪の色・顔・服装は画像に従います。
エラー#
| ステータス | code / type | 理由 |
|---|---|---|
400 | consent_required | consent が true ではなかった。 |
400 | invalid_request_error | ファイルがない・読み取れない、ファイルが大きすぎる、seconds が範囲外、input_reference と character_id の両方。 |
402 | insufficient_quota | 残高が確保額に足りない。 |
404 | not_found_error | 存在しないモデルや動画、動画を作らないモデル、またはあなたの保存したキャラクターではない character_id。 |
429 | rate_limit_exceeded | アカウントですでに 5 本の動画が順番待ちかレンダリング中、またはキーのレート制限に達した。 |
不正利用は /report から報告できます。