使用指南
seedance-2-0 短视频制作指南:hiapi API 实战配方
使用 hiapi 上的 seedance-2-0 任务 API 制作竖屏 TikTok/Reels/Shorts 短片——文本生成视频与图片生成视频、经核实的定价,以及可直接复制粘贴的提交/轮询/下载脚本。
快速概览
- 这是什么:一份可直接运行、可复现的配方,教你用 hiapi 上的
seedance-2.0制作竖屏短视频(TikTok / Reels / Shorts)。下方嵌入的短片正是用其上方印出的提示词原样生成的——绝非借用他人的演示。 - 两种模式,一个模型:
seedance-2.0在同一个端点下同时支持文本生成视频和图片生成视频——可以从提示词开始,也可以让已有的静态图动起来。 - API 事实(已在平台上核实):
seedance-2.0运行在异步任务端点(/v1/tasks)上。input对象需要prompt、aspect_ratio(必填——短视频请用9:16)、resolution(480p/720p/1080p)以及以秒为单位的duration。结果以 MP4 形式返回,位于output[0].url。 - 定价(按输出每秒计):
480p为 $0.136/秒,720p为 $0.293/秒,1080p为 $0.729/秒。一段 4 秒的 480p 短片成本为 $0.54。实时价格请见定价页。 - 如何运行:向任务 API 发起 POST,轮询直到状态为
success,然后从output[0].url下载 MP4——该 URL 是临时的且会过期,因此请立即保存字节数据。完整的可复制脚本(两种模式 + 批量循环)见文末。
为什么短视频选择 seedance-2.0
短视频平台有一套固定的语法:竖屏 9:16、几秒钟时长、一个清晰的动作节拍。这正是 seedance-2.0 为之前生的形态。它只需一个宽高比标志就能渲染出电影感运动,因此你无需与模型较劲去获得竖屏画幅——只要请求 9:16,它就会按该画幅构图。
另一个原因是工作流:每个短片是单个异步任务。你提交作业、轮询任务 ID,然后取回一个完成的 MP4。没有需要照看的流式套接字,也没有需要躲避的 100 秒超时——与其他所有 hiapi 生成模型使用的任务协议完全相同,所以如果你已经调用过图像模型,这里的控制流程是一样的。
模式 1——文本生成视频
这是获得短片最快的路径:描述镜头、选择画幅和时长、提交。
下面的提示词是我实际运行的那一条。像导演一样写——主体、光照、镜头运动——而不是像关键词列表。
提示词:一位咖啡师在阳光充足的咖啡馆里萃取一份浓缩咖啡,特写咖啡油脂旋入杯中,温暖的晨光,轻柔的蒸汽升起,浅景深,平稳的手持镜头推进。
设置:
aspect_ratio: 9:16、resolution: 480p、duration: 4
该短片是原生 9:16 画幅,可直接放入 Reels/Shorts 时间线。渲染大约花了两分钟,按当前 480p 费率估计约 $0.54——足够便宜,可以生成几个变体并保留最好的一个。
请求体很小。人们常漏掉的一个字段是 aspect_ratio:它是必填的,如果漏掉,API 会以 missing required field "aspect_ratio" 拒绝该任务。
import os, json, requests
TOKEN = os.environ["HIAPI_TOKEN"]
BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
payload = {
"model": "seedance-2.0",
"input": {
"prompt": (
"A barista pulls a shot of espresso in a sunlit cafe, close-up on the "
"crema swirling into the cup, warm morning light, gentle steam rising, "
"shallow depth of field, smooth handheld camera push-in."
),
"aspect_ratio": "9:16", # required — 9:16 for short-form
"resolution": "480p", # 480p | 720p | 1080p
"duration": 4, # seconds
},
}
r = requests.post(BASE, headers=HEADERS, data=json.dumps(payload), timeout=60)
task_id = r.json()["data"]["taskId"]
print("submitted:", task_id)
模式 2——图片生成视频
第二种模式是让你提供的静态图动起来,而不是从零创造场景。这正是品牌工作所需的:拍摄(或生成)一张干净的产品静态图,然后让 seedance-2.0 添加动作节拍,这样构图和产品都能保持符合品牌规范。
调用形状与任务调用相同——保留 aspect_ratio、resolution 和 duration,而你的提示词现在描述的是要施加到画面上的运动(“缓慢推进”、“模特转向镜头”、“蒸汽开始升起”),而不是整个场景。将其与来自图像模型的静态图配对,你就拥有了两步流水线:生成主视觉画面,然后让它动起来。
提示:图片生成视频的短片保持简短(4 秒),让运动微妙一些。短视频奖励的是一个干净利落的节拍,而不是繁忙的镜头。
短视频批量的成本计算
由于计费是按输出每秒,你的成本极易预测——选择分辨率,乘以短片时长:
| 分辨率 | 价格 / 秒 | 4 秒短片 | 8 秒短片 |
|---|---|---|---|
| 480p | $0.136 | $0.54 | $1.09 |
| 720p | $0.293 | $1.17 | $2.34 |
| 1080p | $0.729 | $2.92 | $5.83 |
要在钩子上反复迭代,请以 480p 起草——其价格是 720p 的四分之一,足以判断构图和运动。只将胜出的版本以 720p 或 1080p 重新渲染用于最终发布。当前各模型费率请见定价页。
完整脚本——提交、轮询、下载
这是端到端版本:提交一个文本生成视频作业,轮询任务直到完成,然后保存 MP4。下载步骤很重要——output[0].url 是一个临时链接,会过期,因此一旦任务成功就立即将字节写入磁盘。
import os, json, time, requests
TOKEN = os.environ["HIAPI_TOKEN"]
BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
def submit(prompt, aspect_ratio="9:16", resolution="480p", duration=4):
payload = {
"model": "seedance-2.0",
"input": {
"prompt": prompt,
"aspect_ratio": aspect_ratio, # required
"resolution": resolution, # 480p | 720p | 1080p
"duration": duration, # seconds
},
}
r = requests.post(BASE, headers=HEADERS, data=json.dumps(payload), timeout=60)
r.raise_for_status()
return r.json()["data"]["taskId"]
def wait(task_id, timeout_s=600, poll=8):
deadline = time.time() + timeout_s
while time.time() < deadline:
r = requests.get(f"{BASE}/{task_id}", headers=HEADERS, timeout=30)
data = r.json().get("data", {})
status = data.get("status")
if status == "success":
return data
if status == "fail":
raise RuntimeError(f"task failed: {data.get('error')}")
time.sleep(poll)
raise TimeoutError(f"task {task_id} did not finish in {timeout_s}s")
def download(task, path):
out = task["output"][0]
assert out["type"] == "video", f"unexpected output type: {out['type']}"
# output[0].url is temporary (see expireAt) — save immediately.
resp = requests.get(out["url"], timeout=120)
resp.raise_for_status()
with open(path, "wb") as f:
f.write(resp.content)
return path
if __name__ == "__main__":
prompt = (
"A barista pulls a shot of espresso in a sunlit cafe, close-up on the crema "
"swirling into the cup, warm morning light, gentle steam rising, shallow "
"depth of field, smooth handheld camera push-in."
)
tid = submit(prompt, aspect_ratio="9:16", resolution="480p", duration=4)
print("submitted:", tid)
task = wait(tid)
print("saved:", download(task, "espresso_9x16.mp4"))
要把一个钩子变成一整批,请将 submit / wait / download 包裹在遍历提示词的循环中:
HOOKS = {
"espresso": "A barista pulls a shot of espresso in a sunlit cafe, close-up on the crema, gentle steam, handheld push-in.",
"matcha": "A whisk froths bright green matcha in a ceramic bowl, top-down light, slow spiral motion, calm morning mood.",
"pour-over": "Hot water spirals over fresh coffee grounds in a dripper, close macro, steam rising, warm backlight.",
}
for name, prompt in HOOKS.items():
tid = submit(prompt, aspect_ratio="9:16", resolution="480p", duration=4)
task = wait(tid)
download(task, f"{name}_9x16.mp4")
print("done:", name)
以 480p 起草这一批,挑选胜出者,将其以 1080p 重新渲染,然后发布。这就是在一个模型和一个端点上的完整短视频循环。
关键要点
seedance-2.0是/v1/tasks上的单个异步任务,返回一个 MP4——与 hiapi 图像模型的控制流程相同。aspect_ratio是必填的;TikTok / Reels / Shorts 请用9:16。- 计费按输出每秒:480p $0.136/秒,720p $0.293/秒,1080p $0.729/秒——所以以 480p 廉价起草,只将胜出者高分辨率完成。
- 输出 URL 是临时的——一旦任务报告
success,立即下载字节数据。 - 同一次调用既做文本生成视频,也做图片生成视频;将图片生成视频与生成的静态图配对,可获得符合品牌的产品运动。