Seedance 视频生成
本文说明火山 Seedance 视频生成模型的异步任务调用方式,包括文生视频、图生视频和任务查询。
一、Seedance 视频生成
适用模型:
Seedance 使用异步任务接口。
POST https://cn-shanghai-alicloud-aimesh.api.clickzetta.com/gateway/api/v3/contents/generations/tasks
文生视频
curl -X POST "$AI_GATEWAY_VOLC_BASE_URL/contents/generations/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "生成一段 5 秒视频:夜晚城市中,数据流从不同系统汇聚到 AI Gateway,画面专业、干净、科技感。"
}
],
"ratio": "16:9",
"duration": 5,
"resolution": "720p",
"watermark": false
}'
图生视频
curl -X POST "$AI_GATEWAY_VOLC_BASE_URL/contents/generations/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "让图片中的产品缓慢旋转,背景保持干净,镜头轻微推进。"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/first-frame.png"
}
}
],
"ratio": "adaptive",
"duration": 5,
"resolution": "720p",
"watermark": false
}'
视频生成请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|
model
model | string | 是 | Seedance 模型名称。 |
content
content | array | 是 | 多模态输入数组,常见元素包括文本和图片。 |
content[].type
content[].type | string | 是 | 内容类型,例如 text
text 、image_url
image_url 。Seedance 2.0 可能支持更多模态,取决于模型详情页。 |
content[].text
content[].text | string | 条件必填 | 文本提示词。 |
content[].image_url.url
content[].image_url.url | string | 条件必填 | 图片 URL。 |
ratio
ratio | string | 否 | 画面比例,例如 16:9
16:9 、9:16
9:16 、1:1
1:1 、4:3
4:3 、3:4
3:4 、21:9
21:9 、adaptive
adaptive 。 |
duration
duration | integer | 否 | 视频时长,单位秒。支持范围取决于模型版本。 |
resolution
resolution | string | 否 | 分辨率,例如 480p
480p 、720p
720p 、1080p
1080p 。 |
seed
seed | integer | 否 | 随机种子。 |
watermark
watermark | boolean | 否 | 是否添加水印。 |
generate_audio
generate_audio | boolean | 否 | 是否生成音频。是否支持取决于模型版本。 |
camera_fixed
camera_fixed | boolean | 否 | 是否固定镜头。是否支持取决于模型版本。 |
return_last_frame
return_last_frame | boolean | 否 | 是否返回最后一帧。是否支持取决于模型版本。 |
callback_url
callback_url | string | 否 | 任务完成后的回调地址。是否支持取决于接入点能力。 |
创建任务响应
{
"id": "cgt-xxxxxxxxxxxxxxxx",
"model": "doubao-seedance-2.0",
"status": "queued",
"created_at": 1710000000
}
字段说明:
| 字段 | 说明 |
|---|
id
id | 视频生成任务 ID。 |
status
status | 任务状态。 |
created_at
created_at | 创建时间。 |
查询任务结果
curl -X GET "$AI_GATEWAY_VOLC_BASE_URL/contents/generations/tasks/<TASK_ID>" \
-H "Authorization: Bearer $API_KEY"
常见任务状态:
| 状态 | 说明 |
|---|
queued
queued / PENDING
PENDING | 排队中 |
running
running / RUNNING
RUNNING | 处理中 |
succeeded
succeeded / SUCCEEDED
SUCCEEDED | 成功 |
failed
failed / FAILED
FAILED | 失败 |
cancelled
cancelled / CANCELED
CANCELED | 已取消 |
expired
expired | 已过期 |
成功响应通常包含视频 URL:
{
"id": "cgt-xxxxxxxxxxxxxxxx",
"status": "succeeded",
"content": {
"video_url": "https://example.com/generated.mp4"
},
"usage": {
"duration": 5
}
}
注意:
- 火山官方视频任务通常仅支持查询最近 7 天的任务记录。
- 视频 URL 通常有有效期,常见为 24 小时,请生成成功后及时下载或转存。
- 轮询间隔建议 5 到 15 秒,避免高频查询。
- 创建任务前建议做幂等控制,避免用户重复点击导致重复计费。
Python 轮询示例:
import time
import requests
api_key = "<your-api-key>"
base_url = "https://cn-shanghai-alicloud-aimesh.api.clickzetta.com/gateway/api/v3"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
}
payload = {
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "生成一段 5 秒 AI Gateway 产品演示视频。"
}
],
"ratio": "16:9",
"duration": 5,
"resolution": "720p",
"watermark": False,
}
create_resp = requests.post(
f"{base_url}/contents/generations/tasks",
headers=headers,
json=payload,
timeout=60,
)
create_resp.raise_for_status()
task_id = create_resp.json()["id"]
for _ in range(120):
query_resp = requests.get(
f"{base_url}/contents/generations/tasks/{task_id}",
headers={"Authorization": f"Bearer {api_key}"},
timeout=30,
)
query_resp.raise_for_status()
task = query_resp.json()
status = task.get("status")
if status in ("succeeded", "SUCCEEDED"):
print(task.get("content", {}).get("video_url"))
break
if status in ("failed", "FAILED"):
raise RuntimeError(task)
time.sleep(5)
else:
raise TimeoutError("video generation task timeout")