はじめに
P-Video 2 Pro 画像から動画は、開始フレームを、480p または 768p の 5〜15 秒のクリップにアニメーション化します。同じ工程で生成したサウンドトラックが付きます。終了フレームを加えると、ショットの終わりの位置を固定できます。クリップは画像の形を保ち、画像にもプロンプトにも結果にも、コンテンツフィルターはありません。
開始素材で P-Video 2 Pro のモードを選ぶ
| 手元にあるもの | モード |
|---|---|
| 書いたシーンや脚本 | P-Video 2 Pro テキストから動画 |
| 開始フレーム、必要に応じて終了フレーム | P-Video 2 Pro 画像から動画(現在のページ) |
| 動きを借りたいクリップ、または音声や音楽のトラック | P-Video 2 Pro 参照から動画 |
主な機能とハイライト
開始フレームと終了フレーム
image_url が開始、last_image_url が終了を指定します。プロンプトには、一つ目から二つ目へどう移るかを書きます。両方のフレームを同じカメラ位置から撮ったものにすると、モデルはカットせずに二つの間を動けます。
形は画像に従う
アスペクト比の欄はありません。3:4 の縦の写真は 3:4 のクリップに、16:9 の静止画は 16:9 のクリップになります。
高速で無修正
当社のテストでは、5 秒のクリップの生成に約 10〜20 秒かかりました。元画像は、何が写っていてもそのとおりにアニメーション化され、ぼかされたり差し替えられたりするものはありません。
リクエストパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
prompt | はい | 必須。開始フレームの後に起きることを描写してください。 1 文字以上 |
image_url | はい | 開始フレーム。JPEG、PNG、WebP。 |
last_image_url | いいえ | 任意の終了フレーム。クリップはこの画像で終わります。 |
resolution | いいえ | 480p または 768p(既定は 768p)。768p は秒単価が高くなります。 |
generation_mode | いいえ | cost(最も安く、やや遅い)、speed(既定、同じ画質でより速い)、quality(最高画質、最も高い価格)。 |
duration_seconds | いいえ | 整数秒、5〜15(既定は 5)。料金を決めます。 |
prompt_optimization_mode | いいえ | off(既定)はプロンプトをそのまま送ります。turbo と max では、サービス側で先に書き換えます。 |
seed | いいえ | プロンプトを変えながら実行結果を比べやすくします。フレームが完全に同一のクリップになることは保証しません。 |
料金
出力の秒数ごとに課金されます。秒単価は解像度(480p または 768p)と生成モードによって変わります。cost が最も安く、speed はそれより高く、quality が最も高額です。プロンプトの拡張、アスペクト比、シード、終了フレームは価格を変えません。失敗したリクエストには課金されません。
| 解像度 | Generation mode: cost | Generation mode: speed | Generation mode: quality |
|---|---|---|---|
| $0.012 / 秒 | $0.024 / 秒 | $0.048 / 秒 |
| $0.03 / 秒 | $0.042 / 秒 | $0.09 / 秒 |
ユースケース
静止画を動かす
ポートレートや商品写真。次に起きることだけを書けば、顔、衣装、背景は画像から引き継がれます。
ビフォーアフター
開始フレームと違う終了フレームを用意します。衣装、光、ポーズのどれかを変えておけば、モデルが間の動きを埋めます。
シーンを続ける
前のクリップの最後のフレームを次のクリップの開始フレームにすると、ショットをまたいでもキャラクターを一貫させられます。
プロンプトガイドと実践のヒント
絵ではなく動きを書く
画像にはすでに全体の見た目が写っています。プロンプトは、動き、カメラ、音に使ってください。
プロンプトは必須
一部の画像から動画モデルと違い、P-Video 2 Pro はプロンプトが必要です。次の一瞬について、一、二文書けば十分です。
フレームを揃える
開始フレームと終了フレームは、同じ人物とセットを同じ角度から写したものにしてください。食い違うフレームは、カットやモーフィングを強いることになります。
API クイックスタート
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "pruna-ai/p-video-2-pro/image-to-video",
"input": {
"duration_seconds": 5,
"generation_mode": "speed",
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"prompt_optimization_mode": "off",
"resolution": "768p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
認証、完全なスキーマ、ポーリング、エラー処理は API リファレンスを参照してください。



