Skip to content
共绩算力文档中心

容器化部署 EdenLive

EdenLive 是 Wan 架构的神经渲染器(neural renderer),不是通用文生视频模型。

输入三件套(缺一不可):

输入

作用

怎么获得

proxy 视频

提供场景布局、运镜、时序

游戏引擎录屏 / 简单 3D 场景动画 / 任意参考视频

首帧图片

提供目标画风基准

用生图模型(如即梦/Flux)先出一张目标风格的首帧

text prompt

补充外观细节描述

文字描述

典型场景(官方定位):

  • 游戏画面实时精修(Unity/UE 灰盒 → 电影级画面)
  • 风格换皮(写实场景 → 动漫/手绘风格)
  • 视频重渲染(把已有视频换成另一种画风,保持运镜)
  • 具身数据增强(人手操作视频 → 机械臂视角)

能力边界:不支持纯文生视频、图生视频——proxy 是模型硬依赖(DINOv3 编码器逐帧嵌入控制扩散过程)。

规格:720p(1280×704)/ 24fps / H.264,出片时长 ≈ 视频时长,5090 单卡串行。


进入共绩算力官网后选择弹性部署服务 - 新增部署任务,在服务配置中选择预制服务-Edenlive

1-3 分钟后服务就绪

就绪标志:任务状态 Running,且访问 https://<分配域名>/v1/health 返回 200

Terminal window
curl -X GET "https://openapi.suanli.cn/api/deployment/resource/search?task_type=Deployment&device_type=GpuDevice" \
-H "token: <你的共绩 API key>" -H "version: 1.0.0" -H "timestamp: <时间戳>"
curl -X POST "https://openapi.suanli.cn/api/task/deployment/create" \
-H "token: <你的共绩 API key>" -H "version: 1.0.0" -H "Content-Type: application/json" \
-d '{
"task_type": "Deployment",
"task_name": "edenlive-5090",
"points": 1,
"resources": [{"mark": "<上一步的 mark>"}],
"services": [{
"service_name": "edenlive-5090",
"service_image": "harbor.suanleme.cn/bala/edenlive-5090:5090-slim-v24",
"resource_weight": {"cpu_weight": 1, "mem_weight": 1, "gpu_weight": 1},
"remote_ports": [{"service_port": 8080}],
"start_script_v2": {"command": null, "args": []}
}]
}'

所有 /v1/* 接口(除 health/version)需要 Bearer token:

Authorization: Bearer eden-live-5090-token-v7

浏览器打开:

https://<任务域名>/ui

直接上传 proxy 视频和首帧,填 prompt,点生成。

提交渲染任务(multipart 直传):

Terminal window
curl -X POST "https://<任务域名>/v1/render/upload" \
-H "Authorization: Bearer eden-live-5090-token-v7" \
-F "prompt=a cinematic city street at dusk" \
-F "style_preset=realistic" \
-F "seed=42" \
-F "proxy_video=@proxy.mp4" \
-F "first_frame=@first_frame.png"

参数说明:

参数

必填

说明

proxy_video

是

布局/运镜参考视频(mp4)

first_frame

是

画风基准首帧(png/jpg)

prompt

否

外观细节描述

style_preset

否

风格预设:realistic(写实电影感)/ anime(动漫)/ sketch(手绘素描),自动拼接进 prompt

seed

否

随机种子(0 ~ 2^31-1)。同参数同 seed 结果逐字节可复现(实测 md5 一致),做系列内容时固定 seed

轮询任务状态:

Terminal window
curl "https://<任务域名>/v1/render/tsk_xxx" \
-H "Authorization: Bearer eden-live-5090-token-v7"

status 流转:queued → running → done / failed

下载成片:

Terminal window
curl -o output.mp4 "https://<任务域名>/outputs/tsk_xxx.mp4"

方法

路径

用途

POST

/v1/render

提交渲染(URL 模式,服务端拉取,需白名单)

POST

/v1/render/upload

提交渲染(multipart 直传,推荐)

GET

/v1/render/{task_id}

查询任务状态

DELETE

/v1/render/{task_id}

取消任务

GET

/v1/tasks

任务列表

GET

/v1/health

健康检查(免鉴权)

GET

/v1/version

版本与量化自证(免鉴权)

GET

/v1/logs?tail=N

容器日志(排障用)

GET

/outputs/{filename}

下载成片

GET

/ui

WebUI

GET

/docs

Swagger 交互文档

  1. proxy 质量 = 布局质量:运镜轨迹清晰、主体轮廓可辨即可,不需要精细渲染(灰盒即可)
  2. 首帧质量 = 画风上限:首帧是整条视频的视觉基准,建议用生图模型精修后再传
  3. proxy 与首帧的构图要对齐(proxy 第一帧 ≈ 首帧的布局)
  4. 时长建议 2-10 秒起步;分辨率建议 proxy 720p 左右
  5. prompt 描述”想要的样子”(材质/光线/氛围),不描述运镜(运镜由 proxy 决定)

场景

耗时

冷启动(节点有缓存)

40 秒 - 4 分钟

冷启动(新节点全量拉取)

15-60 分钟(看时段)

首次推理(含模型加载)

~250 秒

热推理

74-87 秒/条

显存占用

峰值 ~20.3 GiB / 31.4 GiB

单条成本

约 0.05 元(87s × 2.08 元/h)

以下示例使用官方 GitHub 仓库提供的示例素材(VAST-AI-Research/EdenLive · examples/samples)。

官方仓库共 2 个场景(cryo-crossing、pulse-skirmish),每个场景含 30s 录屏 proxy + 首帧 PNG + prompt JSON。本服务实测矩阵(共 8 条,全部 1280×704):

v24x_pulse_20s.mp4

v24x_cryo_20s.mp4

案例

时长

渲染耗时

结果

cryo-crossing(冰冻熔岩)

5s

103s

✅

pulse-skirmish(街道 skirmish)

5s

102s

✅

cryo-crossing

15s

102s

✅

cryo-crossing(seed=7)

15s

101s

✅

pulse-skirmish

15s

102s

✅

pulse-skirmish(seed=7)

15s

102s

✅

cryo-crossing

20s

122s

✅ 单卡实测上限

pulse-skirmish

20s

122s

✅ 单卡实测上限

两个场景

30s

—

❌ 保存阶段 OOM(见下方说明)

效果(20s 版抽帧验证,长时长无质量退化):

  • cryo-crossing:第一人称冷冻枪、橙色熔岩湖、玄武岩、石拱门,官方 prompt 全部渲染到位
  • pulse-skirmish:街道双枪、彩色建筑、红色机器人、青色等离子光束,全程稳定

时长上限说明(重要):

  • 推荐 ≤20s:20s(477 帧)渲染 122s,显存峰值 ~28.8GiB,32GB 单卡安全
  • 30s 会 OOM:60 个 chunk 推理全部成功,但最后 save_to_video 一次性把 840 帧转 uint8 需 3.61GiB,超出剩余 2.11GiB —— 这是帧缓冲堆积问题,不是推理能力问题
  • 需要 30s 内容:分 2 段各 15s 渲染后拼接(ffmpeg concat)
  • 服务端单任务超时 1800s,20s 渲染 122s 远在限内

官方 prompt 注意:官方 prompt 全文 517 字符,超出本服务 500 字符上限,需截断使用(截断不影响主要画面效果)。

素材获取命令:

Terminal window
curl -L -o recording.mp4 "https://raw.githubusercontent.com/VAST-AI-Research/EdenLive/main/examples/samples/cryo-crossing/recording.mp4"
curl -L -o first-frame.png "https://raw.githubusercontent.com/VAST-AI-Research/EdenLive/main/examples/samples/cryo-crossing/first-frame.png"

提交渲染(官方素材截取 5 秒版):

Terminal window
curl -X POST "https://<任务域名>/v1/render/upload" -H "Authorization: Bearer eden-live-5090-token-v7" -F "prompt=Cinematic photorealism. A vast volcanic cavern dominated by a churning, incandescent molten lava lake..." -F "proxy_video=@recording_5s.mp4" -F "first_frame=@first-frame.png"

3.8 素材规格参考(来自官方示例)

Section titled “3.8 素材规格参考(来自官方示例)”

项

官方示例规格

proxy 分辨率

1280×704(与输出一致)

proxy 编码

H.264 mp4

proxy 时长

30 秒(官方完整版;本服务实测 ≤20s/条,30s 需分段)

首帧格式

PNG(与 proxy 第一帧构图对齐)

prompt 风格

"Cinematic photorealism. ..." 开头的场景级描述

官方 prompt 长度

517 / 785 字符(超 500 上限,截断使用不影响主要画面)

操作

接口

说明

查状态

GET /task/deployment/detail?task_id=xxx

停止

POST /deployment/task/stop body {"task_id": xxx}

⚠️ 路径与创建不对称(deployment/ 在前)

恢复

POST /deployment/task/recover body {"task_id": xxx}

节点有缓存时秒级恢复

成本控制建议:不用时停止任务(约 2.08 元/h),下次用 recover 秒级拉起(同节点缓存)。


现象

原因

处理

创建任务报 C002 镜像认证失败

镜像域名/账号组合不对

确认用 harbor.suanleme.cn + 团队主账号 key;别去改密码(实测密码对错报错一样)

域名访问 404

端口填了非 8080

删任务重建,端口填 8080

域名访问 503

容器还在拉镜像/启动中

等 health 200(PodInitializing 期间正常)

ImagePullBackOff(控制台)

拉取超时或层问题

先看控制台完整报错(API 的 pod_event 是空的);拉取超时换个时段重发即可

推理 E_INFER_FAILED

v20 已知 hf_hub 冲突

见下方「已知限制」

想看容器日志

无 exec 权限

GET /v1/logs?tail=100(带 token)