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 是正确路径。当您有一张参考图像,并希望 PixVerse 从该帧开始向前动画时,请使用 I2V。

开始之前值得了解:

  • 视频片段在 1080p 下最长 5 秒,在 720p 及以下分辨率下最长 8 秒。
  • 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__":
    # 文本生成视频
    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)

    # 图像生成视频——替换为实际的图像路径
    # 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(编码后的有效负载将大约增加 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 并且质量低于标准模式。它非常适合预览生成、批量评估和原型设计;当输出质量是决定性因素时,请使用标准模式。

推荐文章