PixVerse V4.5 快速入門:文字轉影片與圖片轉影片生成

PixVerse V4.5 快速入門:文字轉影片與圖片轉影片生成

PixVerse V4.5 可透過兩個非同步端點在 Novita AI 上使用:POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v 用於文字轉影片(T2V),以及 POST https://api.novita.ai/v3/async/pixverse-v4.5-i2v 用於圖片轉影片(I2V)。兩者遵循相同的兩步驟非同步模式——提交生成請求,收到 task_id,然後輪詢 GET /v3/async/task-result 直到狀態變為 TASK_STATUS_SUCCEED 且影片 URL 可用。本指南將帶你從零開始,為每種模式取得可運作的影片 URL。

何時使用此快速入門

當你在針對 PixVerse V4.5 編寫正式邏輯之前,需要一個經過驗證的有效請求時,請使用本指南。

當你的輸入完全是文字——場景描述、分鏡標題或產品提示——時,T2V 是正確的選擇。I2V 適用於你有參考圖片並希望 PixVerse 從該影格開始向前動畫化的情況。

開始前須知:

  • 影片片段最長 5 秒(1080p),或 8 秒(720p 及以下)。
  • fast_mode: true 可加速生成並降低成本,但解析度上限為 720p。
  • style 預設參數(anime3d_animationclaycomiccyberpunk)標示為僅 v3.5 可用——在正式仰賴它之前,請先在 V4.5 上測試。
  • I2V 圖片輸入必須是 jpg、jpeg 或 png;最大 10MB;最小 300×300px;寬高比介於 1:2.5 至 2.5:1 之間。

本指南不涵蓋 PixVerse 網頁介面、自架部署或微調。僅涵蓋 Novita AI 託管的 API 路徑。

第 1 步:取得你的 Novita API 金鑰

建立 Novita AI 帳戶並導航至 API 金鑰管理。產生金鑰並將其匯出到你的環境變數:

export NOVITA_API_KEY="your_api_key_here"

請將金鑰保留在版本控制、客戶端套件和 Docker 映像層之外。

第 2 步:確認端點

T2V I2V
提交端點 POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v POST https://api.novita.ai/v3/async/pixverse-v4.5-i2v
結果端點 GET https://api.novita.ai/v3/async/task-result?task_id=<id> GET https://api.novita.ai/v3/async/task-result?task_id=<id>
API 參考 T2V 文件 I2V 文件

結果端點是所有 Novita AI 非同步 API 共用的。一旦你了解輪詢迴圈的方式,它對每種模型都以相同方式運作。

第 3 步:發送你的第一個 T2V 請求

使用提示詞和你偏好的寬高比提交一個生成任務。預設值(aspect_ratio: "16:9"resolution: "540p"fast_mode: false)是合理的起點:

curl -s -X POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A time-lapse of cherry blossoms falling in slow motion, soft morning light, cinematic 4K",
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }'

成功的 200 回應僅回傳:

{
  "task_id": "abc123..."
}

儲存 task_id。此階段不會回傳其他內容——影片生成是非同步執行的。

第 4 步:發送你的第一個 I2V 請求

I2V 接受一張起始圖片,並根據提示詞對其進行動畫處理。image_file 欄位預期是來源圖片的 base64 編碼字串:

# 先對圖片進行編碼
IMAGE_B64=$(base64 -w 0 /path/to/your/image.jpg)

curl -s -X POST https://api.novita.ai/v3/async/pixverse-v4.5-i2v \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"prompt\": \"Camera slowly pushes forward, light wind moves through the scene\",
    \"image_file\": \"$IMAGE_B64\",
    \"resolution\": \"720p\"
  }"

回應格式與 T2V 相同:

{
  "task_id": "xyz789..."
}

發送前需檢查的重點圖片限制:

  • 格式:僅限 jpg、jpeg 或 png
  • 檔案大小:最大 10MB(編碼前檢查——base64 會使大小增加約 33%)
  • 最小尺寸:300×300px
  • 寬高比:介於 1:2.5 至 2.5:1(橫向與直向的極端值)

第 5 步:輪詢結果

使用提交步驟回傳的 task_id 來輪詢任務結果端點:

curl -s "https://api.novita.ai/v3/async/task-result?task_id=abc123..." \
  -H "Authorization: Bearer $NOVITA_API_KEY"

task.status 欄位會經歷以下狀態:

狀態 意義
TASK_STATUS_QUEUED 任務正在佇列中等待
TASK_STATUS_PROCESSING 生成正在執行
TASK_STATUS_SUCCEED 影片已就緒;URL 包含在回應中
TASK_STATUS_FAILED 生成失敗;請檢查 task.reason

每 5–10 秒輪詢一次。當出現 TASK_STATUS_SUCCEED 時,影片 URL 就會在回應主體中。task.eta 欄位提供預估完成時間(以秒為單位),你可以用它來安排第一次輪詢的時間。

第 6 步:查看定價與限制

Novita AI 對 PixVerse V4.5 的公佈定價為每個 5 秒片段 $0.7(截至 2026 年 7 月,來自 Novita AI 的 PixVerse 產品頁面 驗證)。在進行任何成本估算之前,請先至 Novita AI 定價頁面 確認當前費率。

fast_mode: true 可更快速地生成影片並降低成本,但解析度上限為 720p。這對於品質次要的原型設計或批次預覽生成非常有用。

速率限制因帳戶等級而異。請查閱 Novita AI 速率限制文件 以了解當前等級的閾值。

主要參數

T2V 參數

參數 類型 預設值 備註
prompt string 必填。最多 2048 個字元。
aspect_ratio string 16:9 16:94:31:13:49:16
resolution string 540p 360p540p720p1080p。1080p 需要 fast_mode: false
negative_prompt string 最多 2048 個字元。描述要避免的內容。
fast_mode boolean false 更快且更便宜;上限為 720p。
style string anime3d_animationclaycomiccyberpunk。標示為僅 v3.5 可用——在正式使用前請先測試。
seed integer 設定以獲得可重現結果;模型更新後輸出仍可能有所變化。

I2V 參數

參數 類型 預設值 備註
prompt string 必填。最多 2048 個字元。
image_file string 必填。Base64 編碼的 jpg/jpeg/png。最大 10MB,最小 300×300px,寬高比 1:2.5 至 2.5:1。
resolution string 540p 與 T2V 相同的選項。
negative_prompt string 最多 2048 個字元。
fast_mode boolean false 與 T2V 相同。
style string 與 T2V 相同。
seed integer 與 T2V 相同。

注意:I2V 沒有 aspect_ratio 參數——輸出寬高比由輸入圖片決定。

Python 範例 — 完整的非同步工作流程

此範例涵蓋 T2V 和 I2V 的提交以及輪詢迴圈,全部寫在一個腳本中:

import os
import time
import base64
import requests

API_KEY = os.environ["NOVITA_API_KEY"]
BASE_URL = "https://api.novita.ai/v3/async"

HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}


def submit_t2v(prompt: str, aspect_ratio: str = "16:9", resolution: str = "720p") -> str:
    resp = requests.post(
        f"{BASE_URL}/pixverse-v4.5-t2v",
        headers=HEADERS,
        json={
            "prompt": prompt,
            "aspect_ratio": aspect_ratio,
            "resolution": resolution,
        },
    )
    resp.raise_for_status()
    return resp.json()["task_id"]


def submit_i2v(prompt: str, image_path: str, resolution: str = "720p") -> str:
    with open(image_path, "rb") as f:
        image_b64 = base64.b64encode(f.read()).decode("utf-8")
    resp = requests.post(
        f"{BASE_URL}/pixverse-v4.5-i2v",
        headers=HEADERS,
        json={
            "prompt": prompt,
            "image_file": image_b64,
            "resolution": resolution,
        },
    )
    resp.raise_for_status()
    return resp.json()["task_id"]


def poll_result(task_id: str, interval: int = 8, timeout: int = 300) -> dict:
    deadline = time.time() + timeout
    while time.time() < deadline:
        resp = requests.get(
            f"{BASE_URL}/task-result",
            headers=HEADERS,
            params={"task_id": task_id},
        )
        resp.raise_for_status()
        data = resp.json()
        status = data.get("task", {}).get("status")
        if status == "TASK_STATUS_SUCCEED":
            return data
        if status == "TASK_STATUS_FAILED":
            reason = data.get("task", {}).get("reason", "unknown")
            raise RuntimeError(f"Task {task_id} failed: {reason}")
        time.sleep(interval)
    raise TimeoutError(f"Task {task_id} did not complete within {timeout}s")


if __name__ == "__main__":
    # Text-to-video
    t2v_task = submit_t2v(
        prompt="A lone lighthouse on a rocky coast at dusk, waves crashing, golden sky",
        aspect_ratio="16:9",
        resolution="720p",
    )
    print(f"T2V task submitted: {t2v_task}")
    t2v_result = poll_result(t2v_task)
    print("T2V result:", t2v_result)

    # Image-to-video — replace with a real image path
    # i2v_task = submit_i2v(
    #     prompt="Gentle wind moves through the scene, slow camera pull-back",
    #     image_path="./reference.jpg",
    #     resolution="720p",
    # )
    # print(f"I2V task submitted: {i2v_task}")
    # i2v_result = poll_result(i2v_task)
    # print("I2V result:", i2v_result)

cURL 範例

使用快速模式的 T2V:

curl -s -X POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A hyperrealistic ocean wave cresting and breaking on shore, slow motion, golden hour",
    "aspect_ratio": "9:16",
    "resolution": "720p",
    "fast_mode": true,
    "negative_prompt": "blurry, low quality, watermark"
  }'

使用種子以獲得可重現結果的 T2V:

curl -s -X POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Neon-lit cyberpunk street at night, rain reflections, hovering vehicles",
    "aspect_ratio": "16:9",
    "resolution": "1080p",
    "seed": 42
  }'

輪詢結果:

curl -s "https://api.novita.ai/v3/async/task-result?task_id=YOUR_TASK_ID" \
  -H "Authorization: Bearer $NOVITA_API_KEY"

疑難排解

I2V 提交出現 400 Bad Request

首先檢查圖片限制:格式必須為 jpg/jpeg/png,base64 編碼前大小必須小於 10MB(編碼後的 payload 會大約增大 33%),最小 300×300px,寬高比介於 1:2.5 至 2.5:1。極端的橫向或直向圖片會被拒絕。

任務長時間停留在 TASK_STATUS_QUEUED

這在平台高負載時是正常現象。task.eta 欄位提供了一個估算值;請據此進行輪詢,而不是頻繁地攻擊端點。如果任務在 10 分鐘後仍未進展,請檢查 Novita AI 的狀態頁面或重新提交。

TASK_STATUS_FAILED 且沒有有用的原因

嘗試使用更短、更簡單的提示詞重新提交。包含模糊動作指示、矛盾場景描述或角色執行不可能物理動作的提示詞通常會失敗。負面提示詞如果太寬泛,也可能與主要提示詞衝突。

快速模式下無法使用 1080p

fast_mode: true 將解析度上限設為 720p。如果你需要 1080p,請移除 fast_mode 或將其設定為 false

style 參數沒有明顯效果

style 參數被標示為僅 v3.5 可用。在 V4.5 請求中,它可能會被靜默忽略或產生不一致的結果。在沒有針對你的特定使用案例進行測試之前,請不要依賴它。

常見問題

PixVerse V4.5 的 T2V 和 I2V 有什麼不同?

T2V 完全根據文字提示生成影片片段——不需要圖片輸入。I2V 則接受一張起始圖片,並根據文字提示對其進行動畫處理,將該圖片作為第一影格。當你需要完全生成的場景時使用 T2V;當你有特定的視覺起點想要動畫化時使用 I2V。

PixVerse V4.5 產生多長的影片片段?

片段長度:1080p 為 5 秒,解析度 720p 及以下可達 8 秒。API 中沒有 duration 參數——片段長度由你選擇的解析度決定。

I2V 端點是否會從圖片推斷寬高比?

是的。I2V 沒有 aspect_ratio 參數。輸出寬高比與輸入圖片匹配。請確保在提交之前將圖片裁剪為你預期的輸出比例。

我可以並行提交 T2V 和 I2V 請求嗎?

可以。每個請求都會回傳自己獨立的 task_id。你可以同時提交多個請求並並行輪詢它們——無需等待一個完成後再提交下一個。

如何在不同執行之間獲得一致的輸出?

seed 參數設為相同的整數。請注意,基於種子的可重現性在模型版本更新後並不能保證——如果你之後需要審查結果,請同時儲存影片 URL 和生成參數。

fast_mode 適合用於正式環境嗎?

這取決於你的品質標準。fast_mode: true 生成影片更快且成本更低,但解析度上限為 720p,且品質低於標準模式。它非常適合預覽生成、批次評估和原型設計;當輸出品質是決定性因素時,請使用標準模式。

推薦文章