Seedance Video Generation
2026-03-29
新闻来源:网淘吧
围观:11
电脑广告
手机广告
Seedance视频生成
通过火山引擎Ark API使用字节跳动Seedance模型生成AI视频。
先决条件
用户必须设置ARK_API_KEY环境变量。您可以通过运行以下命令进行设置:
export ARK_API_KEY="your-api-key-here"
基础URL:https://ark.cn-beijing.volces.com/api/v3
支持的模型
| 模型 | 模型ID | 功能 |
|---|---|---|
| Seedance 1.5 Pro | doubao-seedance-1-5-pro-251215 | 文本到视频、图像到视频(首帧、首+末帧)、音频支持、草稿模式 |
| Seedance 1.0 Pro | doubao-seedance-1-0-pro-250428 | 文本到视频、图像到视频(首帧、首+末帧) |
| Seedance 1.0 Pro Fast | doubao-seedance-1-0-pro-fast-250528 | 文生视频,图生视频(仅首帧) |
| Seedance 1.0 Lite T2V | doubao-seedance-1-0-lite-t2v-250219 | 仅文生视频 |
| Seedance 1.0 Lite I2V | doubao-seedance-1-0-lite-i2v-250219 | 图生视频(首帧,首尾帧,参考图1-4) |
默认模型:doubao-seedance-1-5-pro-251215(最新,支持音频)
执行(推荐:Python CLI 工具)
在以下位置提供了一个 Python CLI 工具:~/.claude/skills/seedance-video/seedance.py用于稳健的执行,具备适当的错误处理、自动重试和本地图像 base64 转换功能。建议使用此工具,而非原始 curl 命令。
使用 Python CLI 的快速示例
# Text-to-video (create + wait + download)
python3 ~/.claude/skills/seedance-video/seedance.py create --prompt "小猫对着镜头打哈欠" --wait --download ~/Desktop
# Image-to-video from local file
python3 ~/.claude/skills/seedance-video/seedance.py create --prompt "人物缓缓转头微笑" --image /path/to/photo.jpg --wait --download ~/Desktop
# Image-to-video from URL
python3 ~/.claude/skills/seedance-video/seedance.py create --prompt "风景画面缓缓推进" --image "https://example.com/image.jpg" --wait --download ~/Desktop
# First + last frame
python3 ~/.claude/skills/seedance-video/seedance.py create --prompt "花朵从含苞到盛开" --image first.jpg --last-frame last.jpg --wait --download ~/Desktop
# Reference images (Lite I2V)
python3 ~/.claude/skills/seedance-video/seedance.py create --prompt "[图1]的人物在跳舞" --ref-images ref1.jpg ref2.jpg --model doubao-seedance-1-0-lite-i2v-250219 --wait --download ~/Desktop
# Custom parameters
python3 ~/.claude/skills/seedance-video/seedance.py create --prompt "城市夜景延时摄影" --ratio 21:9 --duration 8 --resolution 1080p --generate-audio false --wait --download ~/Desktop
# Draft mode (cheaper preview)
python3 ~/.claude/skills/seedance-video/seedance.py create --prompt "海浪拍打沙滩" --draft true --wait --download ~/Desktop
# Generate final video from draft
python3 ~/.claude/skills/seedance-video/seedance.py create --draft-task-id <DRAFT_TASK_ID> --resolution 720p --wait --download ~/Desktop
# Query task status
python3 ~/.claude/skills/seedance-video/seedance.py status <TASK_ID>
# Wait for an existing task
python3 ~/.claude/skills/seedance-video/seedance.py wait <TASK_ID> --download ~/Desktop
# List tasks
python3 ~/.claude/skills/seedance-video/seedance.py list --status succeeded
# Delete/cancel task
python3 ~/.claude/skills/seedance-video/seedance.py delete <TASK_ID>
替代方案:原始 curl 命令
步骤 1:创建视频生成任务
根据用户输入确定生成模式,然后调用 API。
模式A:文生视频
TASK_RESULT=$(curl -s -X POST "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "doubao-seedance-1-5-pro-251215",
"content": [
{
"type": "text",
"text": "YOUR_PROMPT_HERE"
}
],
"ratio": "16:9",
"duration": 5,
"resolution": "720p",
"generate_audio": true
}')
TASK_ID=$(echo "$TASK_RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo "Task created: $TASK_ID"
模式B:图生视频(首帧)
用户提供一张图像作为首帧。图像可以是URL或本地文件路径(需转换为base64格式)。
使用图像URL:
TASK_RESULT=$(curl -s -X POST "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "doubao-seedance-1-5-pro-251215",
"content": [
{
"type": "text",
"text": "YOUR_PROMPT_HERE"
},
{
"type": "image_url",
"image_url": { "url": "IMAGE_URL_HERE" },
"role": "first_frame"
}
],
"ratio": "adaptive",
"duration": 5,
"resolution": "720p",
"generate_audio": true
}')
TASK_ID=$(echo "$TASK_RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo "Task created: $TASK_ID"
使用本地图像文件(转换为base64):
IMG_PATH="/path/to/image.png"
IMG_EXT="${IMG_PATH##*.}"
IMG_EXT_LOWER=$(echo "$IMG_EXT" | tr '[:upper:]' '[:lower:]')
IMG_BASE64=$(base64 < "$IMG_PATH" | tr -d '\n')
IMG_DATA_URL="data:image/${IMG_EXT_LOWER};base64,${IMG_BASE64}"
TASK_RESULT=$(curl -s -X POST "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "doubao-seedance-1-5-pro-251215",
"content": [
{
"type": "text",
"text": "YOUR_PROMPT_HERE"
},
{
"type": "image_url",
"image_url": { "url": "'"$IMG_DATA_URL"'" },
"role": "first_frame"
}
],
"ratio": "adaptive",
"duration": 5,
"resolution": "720p",
"generate_audio": true
}')
TASK_ID=$(echo "$TASK_RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo "Task created: $TASK_ID"
模式C:图生视频(首帧+尾帧)
需要两张图像。支持模型:Seedance 1.5 Pro、1.0 Pro、1.0 Lite I2V。
TASK_RESULT=$(curl -s -X POST "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "doubao-seedance-1-5-pro-251215",
"content": [
{
"type": "text",
"text": "YOUR_PROMPT_HERE"
},
{
"type": "image_url",
"image_url": { "url": "FIRST_FRAME_IMAGE_URL" },
"role": "first_frame"
},
{
"type": "image_url",
"image_url": { "url": "LAST_FRAME_IMAGE_URL" },
"role": "last_frame"
}
],
"ratio": "adaptive",
"duration": 5,
"resolution": "720p",
"generate_audio": true
}')
TASK_ID=$(echo "$TASK_RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo "Task created: $TASK_ID"
模式D:参考图生视频(仅限Seedance 1.0 Lite I2V)
提供1-4张参考图像。在提示词中使用[图1]、[图2]来引用特定图像。
TASK_RESULT=$(curl -s -X POST "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "doubao-seedance-1-0-lite-i2v-250219",
"content": [
{
"type": "text",
"text": "[图1]的人物在跳舞"
},
{
"type": "image_url",
"image_url": { "url": "REF_IMAGE_URL_1" },
"role": "reference_image"
}
],
"ratio": "16:9",
"duration": 5,
"resolution": "720p"
}')
TASK_ID=$(echo "$TASK_RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo "Task created: $TASK_ID"
步骤二:轮询任务完成状态
视频生成是异步过程。请轮询任务状态直至其完成。
echo "Waiting for video generation to complete..."
while true; do
STATUS_RESULT=$(curl -s -X GET "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks/${TASK_ID}" \
-H "Authorization: Bearer $ARK_API_KEY")
STATUS=$(echo "$STATUS_RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['status'])")
if [ "$STATUS" = "succeeded" ]; then
echo "Video generation succeeded!"
VIDEO_URL=$(echo "$STATUS_RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['content']['video_url'])")
echo "Video URL: $VIDEO_URL"
break
elif [ "$STATUS" = "failed" ]; then
ERROR_MSG=$(echo "$STATUS_RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('error',{}).get('message','Unknown error'))" 2>/dev/null || echo "Unknown error")
echo "Video generation failed: $ERROR_MSG"
break
elif [ "$STATUS" = "expired" ]; then
echo "Video generation task expired."
break
else
echo "Status: $STATUS - still processing..."
sleep 15
fi
done
步骤三:下载并打开视频
OUTPUT_PATH="$HOME/Desktop/seedance_video_$(date +%Y%m%d_%H%M%S).mp4"
curl -s -o "$OUTPUT_PATH" "$VIDEO_URL"
echo "Video saved to: $OUTPUT_PATH"
open "$OUTPUT_PATH"
可选参数参考
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
模型 | 字符串 | 豆包舞蹈种子-1.5-专业版-251215 | 要使用的模型ID |
比例 | 字符串 | 16:9(文本转视频)/自适应(图像转视频) | 宽高比:16:9、4:3、1:1、3:4、9:16、21:9、自适应 |
时长 | 整数 | 5 | 视频时长(秒)(1.5 Pro为4-12秒,其他型号为2-12秒)。设为-1表示自动(仅限1.5 Pro) |
分辨率 | 字符串 | 720p | 分辨率:480p、720p、1080p |
种子值 | 整数 | -1 | 用于确保结果可复现的随机种子。-1 表示随机 |
固定摄像机 | 布尔值 | false | 固定摄像机位置 |
水印 | 布尔值 | false | 为视频添加水印 |
生成音频 | 布尔值 | true | 生成同步音频(仅限Seedance 1.5 Pro) |
draft | boolean | false | 以较低成本生成草稿/预览视频(仅限Seedance 1.5 Pro,强制480p分辨率) |
return_last_frame | boolean | false | 返回最后一帧图像的URL(用于链接连续视频) |
service_tier | string | default | default(在线)或flex(离线,便宜50%,速度较慢) |
execution_expires_after | integer | 172800 | 任务超时时间(单位:秒)(3600-259200) |
其他操作
查询任务状态
curl -s -X GET "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks/${TASK_ID}" \
-H "Authorization: Bearer $ARK_API_KEY" | python3 -m json.tool
列出任务
# List all tasks (paginated)
curl -s -X GET "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks?page_num=1&page_size=10" \
-H "Authorization: Bearer $ARK_API_KEY" | python3 -m json.tool
# Filter by status
curl -s -X GET "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks?page_num=1&page_size=10&filter.status=succeeded" \
-H "Authorization: Bearer $ARK_API_KEY" | python3 -m json.tool
取消或删除任务
curl -s -X DELETE "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks/${TASK_ID}" \
-H "Authorization: Bearer $ARK_API_KEY"
注意:队列中的任务将被取消;已成功/失败/已过期的任务将从历史记录中删除。
生成连续视频(使用最后一帧)
在第一个任务中设置return_last_frame: true,然后使用返回的last_frame_url作为下一个任务的第一帧。
# Get last frame URL from completed task
LAST_FRAME_URL=$(curl -s -X GET "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks/${TASK_ID}" \
-H "Authorization: Bearer $ARK_API_KEY" | python3 -c "import sys,json; print(json.load(sys.stdin)['content']['last_frame_url'])")
# Use it as first frame for the next video
# ... (use Mode B with LAST_FRAME_URL as the image URL)
草稿模式(Seedance 1.5 Pro)
先生成一个廉价的预览,如果满意再生成最终视频:
# Step 1: Create draft
DRAFT_RESULT=$(curl -s -X POST "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "doubao-seedance-1-5-pro-251215",
"content": [
{ "type": "text", "text": "YOUR_PROMPT_HERE" }
],
"draft": true,
"resolution": "480p"
}')
DRAFT_TASK_ID=$(echo "$DRAFT_RESULT" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
# Step 2: After draft succeeds, generate final video from draft
FINAL_RESULT=$(curl -s -X POST "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "doubao-seedance-1-5-pro-251215",
"content": [
{
"type": "draft_task",
"draft_task": { "id": "'"$DRAFT_TASK_ID"'" }
}
],
"resolution": "720p"
}')
图像要求
- 格式:jpeg、png、webp、bmp、tiff、gif(1.5 Pro 还支持 heic、heif)
- 宽高比(宽/高):在 0.4 到 2.5 之间
- 尺寸:每边 300-6000 像素
- 最大文件大小:30 MB
通过飞书发送视频文件(OpenClaw)
详见how_to_send_video_via_feishu_app.md
规则
- 始终检查在调用API之前
ARK_API_KEY是否已设置:[ -z "$ARK_API_KEY" ] && echo "错误:ARK_API_KEY 未设置" && exit 1 - 默认使用 Seedance 1.5 Pro(
doubao-seedance-1-5-pro-251215),除非用户指定其他模型。 - 文本生成视频默认参数:720p,16:9,5秒,带音频。
- 图像生成视频默认自适应比例(自动适配输入图像)。
- 轮询间隔:状态检查之间间隔15秒。
- 视频URL有效期为24小时- 请在生成后立即下载。
- 任务历史记录仅保留7天.
- 对于本地图像文件,请先转换为base64数据URL格式再发送
- 始终向用户展示任务ID,以便后续查询状态
- 当生成失败时,请清晰显示错误信息并提供可能的解决方案建议
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~