Seedance 是字节跳动推出的视频生成模型系列,支持文生视频、图生视频和多镜头叙事。对短视频生产来说,它的价值不是“一键出爆款”,而是降低分镜预演和素材生成成本。真正专业的做法,是把 Seedance 放进一条工程流水线:脚本 → 分镜 → 提示词 → 生成 → 审核 → 后期 → 发布。
以下为通用 REST 调用模式,端点与字段以官方为准:
import os, time, requests
API_BASE = os.environ["SEEDANCE_API_BASE"]
API_KEY = os.environ["SEEDANCE_API_KEY"]
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
def create_video(prompt, image_url=None, duration=5, ratio="9:16"):
payload = {
"model": "seedance",
"prompt": prompt,
"duration": duration,
"ratio": ratio,
}
if image_url:
payload["image_url"] = image_url
r = requests.post(
f"{API_BASE}/v1/video/tasks",
json=payload,
headers=HEADERS,
timeout=60,
)
r.raise_for_status()
return r.json()["task_id"]
def wait_video(task_id, interval=5, timeout=600):
start = time.time()
while time.time() - start < timeout:
r = requests.get(
f"{API_BASE}/v1/video/tasks/{task_id}",
headers=HEADERS,
timeout=30,
)
r.raise_for_status()
data = r.json()
if data["status"] == "succeeded":
return data["video_url"]
if data["status"] == "failed":
raise RuntimeError(data.get("error", "generation failed"))
time.sleep(interval)
raise TimeoutError("polling timeout")shots = [
{"scene": "城市清晨", "camera": "推镜", "action": "主角跑步", "duration": 4},
{"scene": "办公室", "camera": "中景", "action": "打开电脑", "duration": 4},
]
def build_prompt(shot):
return (
f"{shot['scene']},{shot['camera']},{shot['action']},"
"电影感,自然光,细节清晰,无文字水印"
)
results = []
for shot in shots:
task_id = create_video(build_prompt(shot), duration=shot["duration"])
video_url = wait_video(task_id)
results.append(video_url)
print("done:", video_url)后期可用 ffmpeg 拼接:
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4Seedance 能显著提升短视频素材生产效率,但专业落地靠的是工程化:分镜结构化、批量任务、失败重试、人工审核和合规发布。模型负责生成,人负责判断和责任。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。