Skip to content

Vidu Q4 Preview 图生视频 API 使用文档 ​

基于 Vidu 最新旗舰模型(预览版)viduq4-preview 的图生视频接口,通过 DMXAPI 网关以三步异步方式调用(提交任务 → 轮询查询 → 下载产物)。以 1 张首帧图生成视频,支持提示词扩写模式(is_rec),模型支持音画同出(含台词和音效)与自动切镜,视频时长 3-16 秒,分辨率覆盖 540p / 720p / 1080p / 2K / 4K 五档,另支持 AI 水印(位置可选)、任务状态回调与透传参数,适用于电商短片、创意内容等以首帧画面驱动的视频生成场景。

接口地址 ​

接口请求方式URL
提交任务POSThttps://www.dmxapi.cn/vidu-q4-preview/v1/image-to-video
查询任务GEThttps://www.dmxapi.cn/vidu-q4-preview/v1/image-to-video/{task_id}

WARNING

请妥善保管您的 API Key!严禁将密钥泄露给他人、硬编码到代码中或提交到公开的代码仓库。如果怀疑密钥已泄露,请立即前往 DMXAPI 官网重新生成。

模型名称 ​

  • viduq4-preview

图生视频 示例代码 ​

python
import requests
import json

# 步骤1: 配置 API 连接信息

# DMXAPI 服务端点地址(图生视频提交接口,DMXAPI 网关原生路由)
url = "https://www.dmxapi.cn/vidu-q4-preview/v1/image-to-video"

# DMXAPI 密钥,请替换为您自己的密钥
# 获取方式: 登录 DMXAPI 官网 -> 个人中心 -> API 密钥管理
api_key = "sk-******************************************"

# 步骤2: 配置请求头

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}",
}

# 步骤3: 配置请求参数

payload = {
    # 【model】(string, 必填) 模型名称。
    # 当前文档使用 viduq4-preview:Vidu 最新旗舰模型预览版,支持音画同出,支持自动切镜。
    "model": "viduq4-preview",

    # 【images】(array, 必填) 首帧图像。
    # 模型将以此参数中传入的图片为首帧画面生成视频;支持图片 Base64 编码或可访问的图片 URL。
    # 官方限制: 只支持输入 1 张图;图片格式支持 png、jpeg、jpg、webp;图片大小不超过 50 MB。
    # 使用 Base64 时,HTTP POST body 不超过 20 MB,且编码需要包含适当的内容类型字符串,例如 data:image/png;base64,{base64_encode}。
    "images": [
        "https://prod-ss-images.s3.cn-northwest-1.amazonaws.com.cn/vidu-maas/template/image2video.png"
    ],

    # 【prompt】(string, 可选) 生成视频的文本描述。
    # 字符长度不能超过 20000 个字符。
    "prompt": "The astronaut waved and the camera moved up.",

    # 【is_rec】(bool, 可选) 是否启用提示词扩写模式。
    # true 表示启用扩写,false 表示不启用;默认值为 true。
    "is_rec": True,

    # 【duration】(int, 可选) 视频时长参数,单位秒。
    # 取值范围为 3-16 秒,默认值为 5。
    "duration": 3,

    # 【resolution】(string, 可选) 视频分辨率。
    # 可选值: "540p" / "720p" / "1080p" / "2K" / "4K";默认值为 "720p"。
    "resolution": "540p",

    # 【audio】(bool, 可选) 是否使用音视频直出能力。
    # false 表示输出静音视频,true 表示需要音画同步并输出有声视频(包括台词和音效);默认值为 true。
    "audio": True,

    # 【seed】(int, 可选) 随机种子。
    # 默认不传或传 0 时,会使用随机数替代;手动设置时使用指定种子。
    "seed": 0,

    # 【payload】(string, 可选) 透传参数,不做任何处理,仅数据传输。
    # 最多 1048576 个字符。
    "payload": "",

    # 【callback_url】(string, 可选) 任务状态变化回调地址。
    # 创建任务时主动设置 callback_url 后,当视频生成任务状态变化时,Vidu 将向该地址发送 POST 回调请求。
    # 回调请求内容结构与查询任务 API 的返回体一致;回调状态包括: processing=任务处理中,success=任务完成,failed=任务失败;发送失败时会回调三次。
    "callback_url": "",

    # 【watermark】(bool, 可选) 是否添加水印。
    # true 表示添加水印,false 表示不添加水印;默认值为 true;官方说明目前水印内容固定,内容由 AI 生成。
    "watermark": True,

    # 【wm_position】(int, 可选) 水印位置。
    # 可选值: 1=左上角,2=右上角,3=右下角,4=左下角;默认值为 3。
    "wm_position": 2,

    # 【wm_url】(string, 可选) 水印内容图片 URL。
    # 不传或为空时,使用默认水印:内容由 AI 生成。
    "wm_url": "https://cdn.jsdelivr.net/gh/opencv/opencv/samples/data/fruits.jpg",

    # 【meta_data】(string, 可选) 元数据标识,JSON 格式字符串,透传字段,可自定义格式或使用官方示例格式。
    # 该参数为空时,默认使用 Vidu 生成的元数据标识。
    # "meta_data": '{"Label":"your_label","ContentProducer":"yourcontentproducer","ContentPropagator":"your_content_propagator","ProduceID":"yourproductid","PropagateID":"your_propagate_id","ReservedCode1":"yourreservedcode1","ReservedCode2":"your_reserved_code2"}',
}

# 步骤4: 发送请求并输出结果

response = requests.post(url, headers=headers, json=payload)

print(json.dumps(response.json(), indent=2, ensure_ascii=False))

提交任务 返回示例 ​

json
{
  "aspect_ratio": "",
  "created_at": "2026-10-21T15:16:45.141567466Z",
  "duration": 3,
  "images": [
    "https://prod-ss-images.s3.cn-northwest-1.amazonaws.com.cn/vidu-maas/template/image2video.png"
  ],
  "is_rec": true,
  "meta_data": "",
  "model": "viduq4-preview",
  "payload": "",
  "prompt": "The astronaut waved and the camera moved up.",
  "resolution": "540p",
  "seed": 549159144,
  "state": "created",
  "task_id": "task_pkjN1B75d05lhK3AZOG3NVNtVIoPPgWG",
  "watermark": true,
  "wm_url": "https://cdn.jsdelivr.net/gh/opencv/opencv/samples/data/fruits.jpg"
}

查询任务并下载视频 示例代码 ​

python
"""
================================================================================
DMXAPI Vidu Q4 Preview 视频生成任务查询与下载脚本
================================================================================

功能说明:
    本脚本用于轮询查询 Vidu Q4 Preview 视频生成任务的状态,
    任务成功后通过 DMXAPI 网关产物接口获取下载地址并保存视频文件。
依赖库:
    - requests: HTTP 请求库,用于发送 API 请求
    - json: JSON 解析库,用于处理响应数据

================================================================================
"""

import requests  # HTTP 请求库 - 用于发送网络请求
import json      # JSON 处理库 - 用于解析 API 响应数据
import time      # 时间处理库 - 用于轮询间隔与超时控制
from pathlib import Path  # 路径处理库 - 用于保存视频文件

# ╔════════════════════════════════════════════════════════════════════════════╗
# ║                           第一部分: API 连接配置                              ║
# ╚════════════════════════════════════════════════════════════════════════════╝
#
# 说明: 此部分配置 API 服务器地址、身份验证信息和轮询参数
#       请确保 API 密钥的安全性,不要泄露给他人
#

# API 服务端点地址
base_url = "https://www.dmxapi.cn"

# API 密钥 (API Key)
# - 用途: 身份验证,确保只有授权用户可以访问 API
# - 格式: 以 "sk-" 开头的字符串
# - 注意: 请妥善保管,不要将密钥提交到公开代码仓库
api_key = "sk-***********************************************"

# 任务类型
# - 可选值: "image_to_video"(图生视频) / "reference_to_video"(参考生视频)
# - 用于拼接对应的原生查询接口路径,需与提交任务时使用的接口一致
task_type = "image_to_video"

# 要查询的任务 ID
# - 此 ID 由创建任务时返回(提交任务响应中的 task_id)
# - 请替换为您实际的任务 ID
task_id = "task_pkjN1B75d05lhK3AZOG3NVNtVIoPPgWG"

# 轮询配置
# - poll_interval: 每次查询的间隔时间(秒)
# - max_wait_seconds: 轮询总超时时间(秒),超时后停止等待
poll_interval = 10
max_wait_seconds = 1800

# 视频保存目录
output_dir = Path("viduq4_outputs")

# task_type 到查询接口路径的映射
TASK_TYPE_QUERY_SEGMENT = {
    "image_to_video": "image-to-video",
    "reference_to_video": "reference-to-video",
}

# ╔════════════════════════════════════════════════════════════════════════════╗
# ║                          第二部分: HTTP 请求头配置                            ║
# ╚════════════════════════════════════════════════════════════════════════════╝
#
# 说明: HTTP 请求头用于告知服务器请求的格式和认证信息
#       这是 RESTful API 调用的标准配置
#

headers = {
    # Authorization: 身份验证头
    # - 认证方案: Bearer 令牌认证方式
    # - 服务器通过此字段验证请求者身份
    "Authorization": f"Bearer {api_key}",
}

# ╔════════════════════════════════════════════════════════════════════════════╗
# ║                       第三部分: 轮询查询任务状态                              ║
# ╚════════════════════════════════════════════════════════════════════════════╝
#
# 说明: 视频生成为异步任务,提交成功后需定期查询任务状态
#       state 为 created / queueing / processing 时继续等待
#       state 为 success 时查询完成,failed 时任务失败
#

# 拼接查询接口地址
query_url = f"{base_url}/vidu-q4-preview/v1/{TASK_TYPE_QUERY_SEGMENT[task_type]}/{task_id}"

print("=" * 60)
print("🚀 开始轮询查询任务状态...")
print("=" * 60)

start_time = time.time()
while True:
    # 发送 GET 请求查询任务最新状态
    response = requests.get(query_url, headers=headers)
    result = response.json()
    state = result.get("state", "")

    # 任务成功: 打印结果并退出轮询
    if state == "success":
        print("✅ 视频生成完成!")
        print(json.dumps(result, indent=2, ensure_ascii=False))
        break

    # 任务失败: 输出错误信息并终止
    if state == "failed":
        raise RuntimeError(f"❌ 任务失败: {result.get('err_code') or result}")

    # 超时判断: 超过最长等待时间则停止轮询
    if time.time() - start_time > max_wait_seconds:
        raise TimeoutError(f"❌ 任务轮询超时({max_wait_seconds} 秒)")

    # 任务仍在进行中: 等待后再次查询
    print(f"当前状态: {state},{poll_interval} 秒后再次查询...")
    time.sleep(poll_interval)

# ╔════════════════════════════════════════════════════════════════════════════╗
# ║                       第四部分: 下载视频产物                                  ║
# ╚════════════════════════════════════════════════════════════════════════════╝
#
# 说明: 任务成功后,通过网关产物接口获取视频下载地址并保存到本地
#       注意: 查询返回 creations 中的 url / cover_url / watermarked_url
#             均只有 24 小时有效期,请及时下载保存
#

# 请求产物列表接口
artifacts_url = f"{base_url}/v1/tasks/{task_id}/artifacts"
response = requests.get(artifacts_url, headers=headers)
artifacts = response.json().get("artifacts", [])

# 从产物列表中选取视频下载地址(优先 key 为 video 的产物)
content_url = None
for item in artifacts:
    if item.get("key") == "video" and item.get("content_url"):
        content_url = item["content_url"]
        break
if content_url is None and artifacts:
    content_url = artifacts[0].get("content_url")
if not content_url:
    raise RuntimeError("❌ 产物列表中没有可下载的视频地址")

# 下载视频并保存到输出目录
output_dir.mkdir(parents=True, exist_ok=True)
output_path = output_dir / f"{task_type}_{task_id}.mp4"

video_response = requests.get(content_url, headers=headers, stream=True)
with output_path.open("wb") as output_file:
    for chunk in video_response.iter_content(chunk_size=1024 * 1024):
        if chunk:
            output_file.write(chunk)

print(f"💾 视频已保存到: {output_path}")

查询与下载 返回示例 ​

轮询过程控制台输出:

text
============================================================
🚀 开始轮询查询任务状态...
============================================================
当前状态: processing,10 秒后再次查询...
当前状态: processing,10 秒后再次查询...
当前状态: processing,10 秒后再次查询...
当前状态: processing,10 秒后再次查询...
当前状态: processing,10 秒后再次查询...
当前状态: processing,10 秒后再次查询...
✅ 视频生成完成!

任务成功后查询接口返回:

json
{
  "creations": [
    {
      "cover_url": "https://prod-ss-vidu.s3.oss-cn-beijing.aliyuncs.com/infer_64/tasks/26/1021/15/1010509713235800064/creation-01/cover.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=***&X-Amz-Date=20261021T151853Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=***",
      "id": "1010510211993063424",
      "url": "https://prod-ss-vidu.s3.oss-cn-beijing.aliyuncs.com/infer_64/tasks/26/1021/15/1010509713235800064/creation-01/video.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=***&X-Amz-Date=20261021T151853Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=***",
      "watermarked_url": "https://prod-ss-vidu.s3.oss-cn-beijing.aliyuncs.com/infer_64/tasks/26/1021/15/1010509713235800064/creation-01/watermarked.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=***&X-Amz-Date=20261021T151853Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=***"
    }
  ],
  "err_code": "",
  "id": "task_pkjN1B75d05lhK3AZOG3NVNtVIoPPgWG",
  "payload": "",
  "state": "success"
}

视频产物下载保存:

text
💾 视频已保存到: viduq4_outputs/image_to_video_task_pkjN1B75d05lhK3AZOG3NVNtVIoPPgWG.mp4

© 2026 DMXAPI Vidu Q4 Preview 图生视频

一个 Key 用全球大模型