Vidu Q4 API
生数科技 Vidu Q4——图生视频和参考生视频,时长 3-16 秒,输出 540p 至 4K,可选生成音频。参考生视频单次请求最多接受 12 张参考图像和 3 段参考音频。
两个端点:vidu/q4-preview/image-to-video 让单张图像动起来,vidu/q4-preview/reference-to-video 根据提示词加最多 12 张参考图像和 3 段参考音频构建场景。两者都支持 3 到 16 秒之间的任意整数秒时长、从 540p 到 4K 的五档分辨率,以及音频开关。
概览
关于 Vidu Q4 API
Vidu Q4 能做什么、它在 Shengshu 模型阵容中的定位,以及团队选择它的原因。
Vidu Q4 是 Shengshu 推出的视频生成模型,可通过 WaveSpeedAI REST API 使用。生数科技 Vidu Q4——图生视频和参考生视频,时长 3-16 秒,输出 540p 至 4K,可选生成音频。参考生视频单次请求最多接受 12 张参考图像和 3 段参考音频。
两个端点:vidu/q4-preview/image-to-video 让单张图像动起来,vidu/q4-preview/reference-to-video 根据提示词加最多 12 张参考图像和 3 段参考音频构建场景。两者都支持 3 到 16 秒之间的任意整数秒时长、从 540p 到 4K 的五档分辨率,以及音频开关。
WaveSpeedAI 上的 Vidu Q4 系列提供 2 个 REST 端点,涵盖 Reference-To-Video, Image-To-Video 个工作流。每个变体都有各自的定价、参数选项和示例输出——请选择与你的输入模态和生产约束相匹配的那一个,或使用同一个 API 密钥调用多个变体,组合成多步骤流水线。
使用与 WaveSpeedAI 上其他 1,000 多个 AI 模型相同的 API 密钥、账单账户和速率限制来运行 Vidu Q4。无需单独对接供应商,无需各家 SDK,也无需应对各家不同的速率限制——一次集成即可覆盖从文生图、文生视频到音频合成、3D 生成、放大和编辑的全部能力。
规格
Vidu Q4 API 的能力与发布状态
开发者在选择 API 之前会搜索的模型细节:可用性、预期输出时长、参考素材支持情况,以及当前可用的在线替代方案。
端点
2 个变体
图生视频和参考生视频。
时长
3-16 秒
任意整数秒;默认 5 秒。
分辨率
540p 至 4K
540p、720p、1080p、2K、4K;默认 720p。
参考
12 张图像 + 3 段音频
用于参考生视频,配合文本提示词使用。
端点
全部 Vidu Q4 API 端点
WaveSpeedAI 现已提供 2 个 Vidu Q4 端点——请选择适合你工作流的变体。
/filters:quality(82)/media/images/1790656175314160249_JiSjQ9AW.webp)
Q4 Preview Reference To Video
Vidu Q4 Reference-to-Video generates subject-consistent AI videos from text prompts, 1-12 reference images, and up to 3 reference audio clips, supporting character consistency, product videos, social content, brand assets, and reference-guided storytelling workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
/filters:quality(82)/media/images/1790656159881988529_32y4wP0a.webp)
Q4 Preview Image To Video
Vidu Q4 Image-to-Video animates a single reference image into high-quality AI video with prompt-guided motion, optional audio, 3-16 second duration, and output resolutions from 540P to 4K for product animation, social content, marketing creatives, cinematic visuals, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
示例
看看 Vidu Q4 的实际效果
由 Vidu Q4 API 生成的真实输出。悬停在任意视频上即可预览,点击可打开全尺寸查看器。
使用方法
如何使用 Vidu Q4 API
从注册到完成一次生成,只需四步。完整的 Python、Node.js 和 cURL 示例见下方的 API 部分。
- 01
获取 API 密钥
注册 WaveSpeedAI 账号,并从控制台复制你的 API 密钥。新账号附带免费体验额度——足够在开始计费前把 Playground 运行几十次。
- 02
提交预测
把你的输入以 JSON 形式 POST 到 https://api.wavespeed.ai/api/v3/vidu/q4-preview/image-to-video。端点会立即返回预测 ID——生成是异步的,因此推理期间你无需保持连接。
- 03
轮询完成状态
GET https://api.wavespeed.ai/api/v3/predictions/{request_id}/result。状态为 completed 时返回输出;状态为 failed、cancelled、timeout 或 deleted 时以错误终止;其他任何状态都继续轮询。
- 04
读取输出 URL
状态变为 "completed" 后,从 data.outputs[0] 读取 URL。该 URL 指向 WaveSpeedAI CDN 上你生成的媒体——具体是图片、视频、音频还是 3D 文件,取决于你调用的 Vidu Q4 变体。
应用场景
用 Vidu Q4 可以构建什么
开发者和创作者使用 Vidu Q4 API 的常见工作流。
一张照片生成产品动画
vidu/q4-preview/image-to-video 把一张产品图变成宣传短片。描述你想要的运镜和动作,图像始终作为画面的视觉锚点。
角色形象始终如一
vidu/q4-preview/reference-to-video 最多接受 12 张参考图像,反复出现的角色、吉祥物或代言人可以从多个角度展示,并在不同片段中保持辨识度。
由声音引导的场景
在图像之外,通过 audios 字段添加最多 3 段参考音频,并保持 generate_audio 开启,一次调用即可得到带声音的片段。
可直接交付的 4K
两个端点都可输出 540p、720p、1080p、2K 或 4K。先用 540p 或 720p 打草稿,再以交付分辨率重跑定稿的提示词,无需额外的放大步骤。
覆盖所有社交画幅
参考生视频可渲染 16:9、9:16、1:1、3:4 或 4:3,同一组参考即可覆盖 YouTube、Reels、Shorts、信息流帖子和产品页面。
时长卡准节奏
时长可为 3 到 16 秒之间的任意整数秒,3 秒循环、6 秒片头和 15 秒广告都能出自同一个端点。
技巧
Vidu Q4 提示词技巧
让 Vidu Q4 输出更好结果的实用建议——总结自生产流水线中各类视频模型都适用的做法。
- 01
使用清晰、光线充足的源图像
对于 vidu/q4-preview/image-to-video,图像决定主体、构图和风格。选择一张清晰、主体单一明确的图像,再用提示词描述动作和运镜,而不是重复描述画面里已有的内容。
- 02
让每张参考各司其职
使用 vidu/q4-preview/reference-to-video 时,选用真正属于场景的参考——角色、产品、环境——并在提示词中说明每个参考应如何出现,而不是发送关联松散的图像。
- 03
让动作量匹配时长
要求的动作量要与片段长度相符。3-5 秒的片段适合一个动作或手势;多步骤的动作留给 10-16 秒。
- 04
低分辨率打草稿,高分辨率交付
先用 540p 或 720p 和较短时长探索创意,再以 1080p、2K 或 4K 重跑选定的提示词用于交付。
- 05
提前决定音频和提示词改写
generate_audio 默认开启;如果你要自己配乐,请关闭它。在图生视频中,如果希望按原样使用你的提示词,请将 enable_prompt_expansion 设为 false。
定价
Vidu Q4 API 定价
按输出计费。最终费用会随你在各变体 Playground 中设置的参数(分辨率、时长、输出数量、参考素材)而变化。
| 端点 | 类型 | 起步价 |
|---|---|---|
| vidu/ | reference-to-video | $0.25 |
| vidu/ | image-to-video | $0.25 |
API
调用 Vidu Q4 API
在 wavespeed.ai/accesskey 注册并获取 API 密钥,然后通过 REST 提交预测。Playground 可以为任意输入组合生成可直接粘贴的示例代码。
POSThttps://api.wavespeed.ai/api/v3/vidu/q4-preview/image-to-video
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/vidu/q4-preview/image-to-video" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $WAVESPEED_API_KEY" \
-d '{
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"resolution": "720p",
"duration": 5,
"enable_prompt_expansion": true,
"generate_audio": true
}')
TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
-H "Authorization: Bearer $WAVESPEED_API_KEY")
RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
case "$STATUS" in
completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
failed|cancelled|timeout|deleted) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
*) sleep 2 ;;
esac
doneconst submitUrl = "https://api.wavespeed.ai/api/v3/vidu/q4-preview/image-to-video";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');
async function requestJson(url, options = {}) {
const response = await fetch(url, options);
if (!response.ok) throw new Error(await response.text());
return response.json();
}
// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
method: "POST",
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"resolution": "720p",
"duration": 5,
"enable_prompt_expansion": true,
"generate_audio": true
}),
});
const task = body.data ?? body;
const resultUrl = `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;
// 2. Poll until the prediction finishes.
while (true) {
const resultBody = await requestJson(resultUrl, {
headers: { "Authorization": `Bearer ${apiKey}` },
});
const result = resultBody.data ?? resultBody;
if (result.status === "completed") {
console.log(result.outputs);
break;
}
if (["failed", "cancelled", "timeout", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
await new Promise(resolve => setTimeout(resolve, 2000));
}import json
import os
import time
from urllib.request import Request, urlopen
api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"resolution": "720p",
"duration": 5,
"enable_prompt_expansion": True,
"generate_audio": True
}
def request_json(url, data=None):
request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
with urlopen(request) as response:
return json.load(response)
# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/vidu/q4-preview/image-to-video", json.dumps(payload).encode())
task = body.get("data", body)
result_url = f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"
# 2. Poll until the prediction finishes.
while True:
result_body = request_json(result_url)
result = result_body.get("data", result_body)
status = result.get("status")
if status == "completed":
print(result.get("outputs", []))
break
if status in {"failed", "cancelled", "timeout", "deleted"}:
raise RuntimeError(result)
time.sleep(2)对比
Vidu Q4 与其他方案对比
在 WaveSpeedAI 上,何时应选择 Vidu Q4 而不是同类模型。
Vidu Q4 对比 Vidu Q3
Vidu Q3 参考生视频接受 1-4 张参考图像;Q4 最多接受 12 张图像外加最多 3 段音频参考,且两个 Q4 端点都能达到 4K。文生视频、首尾帧关键帧插值以及 Pro 和 Turbo 档位仍首选 Q3。
Vidu Q4 对比 Seedance 2.5
Seedance 2.5 单镜头最长可达 30 秒,并增加了视频编辑和视频延长端点。Vidu Q4 专注于图像和参考驱动的生成,输出最高 4K。
Vidu Q4 对比 Wan 3.0
Wan 3.0 提供文生视频、图生视频和参考生视频,最长 30 秒,最高 1080p。Vidu Q4 最长 16 秒,但增加了 2K 和 4K 输出,并支持最多 12 张参考图像。
常见问题
Vidu Q4 API — 常见问题
定价、许可、集成——关于在 WaveSpeedAI 上运行 Vidu Q4 的常见问题。
Vidu Q4 API 是什么?
Vidu Q4 是 Shengshu 的视频生成模型,在 WaveSpeedAI 上以 REST API 形式提供。生数科技 Vidu Q4——图生视频和参考生视频,时长 3-16 秒,输出 540p 至 4K,可选生成音频。参考生视频单次请求最多接受 12 张参考图像和 3 段参考音频。你可以通过编程方式调用它,也可以在上方链接的 Playground 中试用。
如何调用 Vidu Q4 API?
注册 WaveSpeedAI 账号,从 /accesskey 复制你的 API 密钥,然后把输入以 JSON 形式 POST 到 https://api.wavespeed.ai/api/v3/vidu/q4-preview/image-to-video。端点会返回预测 ID。从大约每 2 秒一次开始轮询结果端点,长耗时任务可适当拉长间隔,并在任何终止状态时停止。上方有面向生产环境的 Python / Node.js / cURL 示例。
Vidu Q4 API 的费用是多少?
Vidu Q4 每次调用 $0.25 起。实际费用会随你设置的参数(分辨率、时长、输出数量、参考素材)而变化。Playground 中“生成”按钮旁的实时费用预览会显示你当前输入对应的准确价格。
有哪些 Vidu Q4 变体可用?
WaveSpeedAI 托管了 2 个已上线的 Vidu Q4 端点:vidu/q4-preview/reference-to-video, vidu/q4-preview/image-to-video。每个变体都有自己的 Playground 页面和定价。
Vidu Q4 的输出可以商用吗?
商用权利遵循 Shengshu 的模型许可。大多数 Shengshu 模型允许商用输出;具体许可摘要请查看各模型的 Playground 页面,平台层面的条件请参阅 WaveSpeedAI 的服务条款。
为什么要在 WaveSpeedAI 上使用 Vidu Q4,而不是直接对接?
一个 API 密钥、一个账单账户,即可使用 Vidu Q4 以及来自其他提供方的 1,000 多个 AI 模型。无需逐家配置 SDK,无需应对各自独立的速率限制,也无需为每家重写集成代码。价格通常与 Shengshu 直接提供的 API 持平或更低。
提供方
关于 Shengshu
Vidu Q4 及 WaveSpeedAI 上 Shengshu 更多模型背后的团队。
生数科技是从清华大学孵化出来的中国 AI 实验室,也是 Vidu 系列视频生成模型背后的团队。最新一代 Vidu Q4 提供图生视频和参考生视频,最多支持 12 张参考图像、最多 3 段参考音频,输出最高 4K。Vidu Q3 在 Standard、Pro 和 Turbo 档位上提供文生视频、图生视频、参考生视频(1-4 张参考图像,保持多主体一致性)和首尾帧生视频(在两张静态图之间做关键帧插值)。部分变体最长可输出 16 秒。
在 WaveSpeedAI 上用 Vidu Q4 开始构建
注册即送免费体验额度。一个 API 密钥,即可使用来自 Shengshu 及其他所有提供方的 1,000 多个 AI 模型。