视频系列Seedance 2.0
Python 轮询与下载
使用 Python 创建 Seedance 2.0 任务、轮询状态并下载结果视频。
Seedance 2.0 是异步任务接口。建议按固定间隔轮询任务状态,常见生成耗时为数分钟;示例中使用 10 秒轮询间隔。
pip install requestsimport os
import time
import requests
BASE_URL = "https://api.modelsell.com"
API_KEY = os.environ["MODELSELL_API_KEY"]
MODEL = "doubao-seedance-2-0-260128"
def create_task(prompt: str) -> str:
response = requests.post(
f"{BASE_URL}/api/v3/contents/generations/tasks",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"model": MODEL,
"content": [
{
"type": "text",
"text": prompt,
}
],
"resolution": "480p",
"ratio": "16:9",
"duration": 5,
"generate_audio": True,
"watermark": False,
},
timeout=180,
)
response.raise_for_status()
return response.json()["id"]
def wait_for_result(task_id: str, max_wait: int = 600, interval: int = 10) -> str:
elapsed = 0
while elapsed < max_wait:
time.sleep(interval)
elapsed += interval
response = requests.get(
f"{BASE_URL}/api/v3/contents/generations/tasks/{task_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=60,
)
response.raise_for_status()
data = response.json()
status = data.get("status")
print(f"[{elapsed}s] status={status}")
if status == "succeeded":
return data["content"]["video_url"]
if status == "failed":
error = data.get("error") or {}
raise RuntimeError(error.get("message", "视频生成失败"))
raise TimeoutError(f"任务超时: {task_id}")
def download_video(video_url: str, save_path: str) -> None:
response = requests.get(video_url, stream=True, timeout=120)
response.raise_for_status()
with open(save_path, "wb") as file:
for chunk in response.iter_content(chunk_size=8192):
if chunk:
file.write(chunk)
if __name__ == "__main__":
task_id = create_task("一只金色柴犬在樱花树下奔跑,镜头缓缓上升")
video_url = wait_for_result(task_id)
download_video(video_url, "seedance-output.mp4")查询结果中 content.video_url 通常具有时效性,生产环境建议获取后立即转存到自己的对象存储。
生成模式示例
Previous Page
视频生成
使用 Seedance 2.0 官方 `content[]` 格式创建异步视频生成任务。支持文生视频、图生视频、视频生视频、图像与音频组合、视频与音频组合,以及图像、视频、音频全模态引用。 若希望使用 ModelSell 的通用视频格式,也可以调用 `/v1/video/generations` 或 `/v1/videos`,通过 `prompt`、`image`、`images`、`metadata.video_url`、`metadata.audio_url` 等字段提交。 需要复用图片、视频或音频素材时,先调用 `/api/assets/upload` 上传素材,素材状态为 `Active` 后可在 `content[].*_url.url` 中传入 `asset://<asset_id>`。