网淘吧来吧,欢迎您!

Seedance Video Generation

2026-03-29 新闻来源:网淘吧 围观:11
电脑广告
手机广告

Seedance视频生成

通过火山引擎Ark API使用字节跳动Seedance模型生成AI视频。

先决条件

用户必须设置ARK_API_KEY环境变量。您可以通过运行以下命令进行设置:

export ARK_API_KEY="your-api-key-here"

基础URLhttps://ark.cn-beijing.volces.com/api/v3

支持的模型

模型模型ID功能
Seedance 1.5 Prodoubao-seedance-1-5-pro-251215文本到视频、图像到视频(首帧、首+末帧)、音频支持、草稿模式
Seedance 1.0 Prodoubao-seedance-1-0-pro-250428文本到视频、图像到视频(首帧、首+末帧)
Seedance 1.0 Pro Fastdoubao-seedance-1-0-pro-fast-250528文生视频,图生视频(仅首帧)
Seedance 1.0 Lite T2Vdoubao-seedance-1-0-lite-t2v-250219仅文生视频
Seedance 1.0 Lite I2Vdoubao-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:94:31:13:49:1621:9自适应
时长整数5视频时长(秒)(1.5 Pro为4-12秒,其他型号为2-12秒)。设为-1表示自动(仅限1.5 Pro)
分辨率字符串720p分辨率:480p720p1080p
种子值整数-1用于确保结果可复现的随机种子。-1 表示随机
固定摄像机布尔值false固定摄像机位置
水印布尔值false为视频添加水印
生成音频布尔值true生成同步音频(仅限Seedance 1.5 Pro)
draftbooleanfalse以较低成本生成草稿/预览视频(仅限Seedance 1.5 Pro,强制480p分辨率)
return_last_framebooleanfalse返回最后一帧图像的URL(用于链接连续视频)
service_tierstringdefaultdefault(在线)或flex(离线,便宜50%,速度较慢)
execution_expires_afterinteger172800任务超时时间(单位:秒)(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

规则

  1. 始终检查在调用API之前ARK_API_KEY是否已设置:[ -z "$ARK_API_KEY" ] && echo "错误:ARK_API_KEY 未设置" && exit 1
  2. 默认使用 Seedance 1.5 Pro(doubao-seedance-1-5-pro-251215),除非用户指定其他模型。
  3. 文本生成视频默认参数:720p,16:9,5秒,带音频
  4. 图像生成视频默认自适应比例(自动适配输入图像)。
  5. 轮询间隔:状态检查之间间隔15秒。
  6. 视频URL有效期为24小时- 请在生成后立即下载。
  7. 任务历史记录仅保留7天.
  8. 对于本地图像文件,请先转换为base64数据URL格式再发送
  9. 始终向用户展示任务ID,以便后续查询状态
  10. 当生成失败时,请清晰显示错误信息并提供可能的解决方案建议
免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Xiaohongshu Deep Research 下一篇:Daily Briefing

相关文章

您是本站第312548名访客 今日有387篇新文章/评论