容器化部署 EdenLive
一、这个服务是什么
Section titled “一、这个服务是什么”EdenLive 是 Wan 架构的神经渲染器(neural renderer),不是通用文生视频模型。
输入三件套(缺一不可):
输入 | 作用 | 怎么获得 |
proxy 视频 | 提供场景布局、运镜、时序 | 游戏引擎录屏 / 简单 3D 场景动画 / 任意参考视频 |
首帧图片 | 提供目标画风基准 | 用生图模型(如即梦/Flux)先出一张目标风格的首帧 |
text prompt | 补充外观细节描述 | 文字描述 |
典型场景(官方定位):
- 游戏画面实时精修(Unity/UE 灰盒 → 电影级画面)
- 风格换皮(写实场景 → 动漫/手绘风格)
- 视频重渲染(把已有视频换成另一种画风,保持运镜)
- 具身数据增强(人手操作视频 → 机械臂视角)
能力边界:不支持纯文生视频、图生视频——proxy 是模型硬依赖(DINOv3 编码器逐帧嵌入控制扩散过程)。
规格:720p(1280×704)/ 24fps / H.264,出片时长 ≈ 视频时长,5090 单卡串行。
二、发布任务
Section titled “二、发布任务”2.1 弹性服务部署预制镜像
Section titled “2.1 弹性服务部署预制镜像”进入共绩算力官网后选择弹性部署服务 - 新增部署任务,在服务配置中选择预制服务-Edenlive
1-3 分钟后服务就绪
就绪标志:任务状态 Running,且访问 https://<分配域名>/v1/health 返回 200

2.2 API 方式(curl 示例)
Section titled “2.2 API 方式(curl 示例)”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": []} }] }'三、使用服务
Section titled “三、使用服务”3.1 鉴权
Section titled “3.1 鉴权”所有 /v1/* 接口(除 health/version)需要 Bearer token:
Authorization: Bearer eden-live-5090-token-v73.2 WebUI 方式
Section titled “3.2 WebUI 方式”浏览器打开:
https://<任务域名>/ui直接上传 proxy 视频和首帧,填 prompt,点生成。
3.3 API 方式
Section titled “3.3 API 方式”提交渲染任务(multipart 直传):
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"参数说明:
参数 | 必填 | 说明 |
| 是 | 布局/运镜参考视频(mp4) |
| 是 | 画风基准首帧(png/jpg) |
| 否 | 外观细节描述 |
| 否 | 风格预设: |
| 否 | 随机种子(0 ~ 2^31-1)。同参数同 seed 结果逐字节可复现(实测 md5 一致),做系列内容时固定 seed |
轮询任务状态:
curl "https://<任务域名>/v1/render/tsk_xxx" \ -H "Authorization: Bearer eden-live-5090-token-v7"status 流转:queued → running → done / failed
下载成片:
curl -o output.mp4 "https://<任务域名>/outputs/tsk_xxx.mp4"3.4 接口清单
Section titled “3.4 接口清单”方法 | 路径 | 用途 |
POST |
| 提交渲染(URL 模式,服务端拉取,需白名单) |
POST |
| 提交渲染(multipart 直传,推荐) |
GET |
| 查询任务状态 |
DELETE |
| 取消任务 |
GET |
| 任务列表 |
GET |
| 健康检查(免鉴权) |
GET |
| 版本与量化自证(免鉴权) |
GET |
| 容器日志(排障用) |
GET |
| 下载成片 |
GET |
| WebUI |
GET |
| Swagger 交互文档 |
3.5 素材制作要点
Section titled “3.5 素材制作要点”- proxy 质量 = 布局质量:运镜轨迹清晰、主体轮廓可辨即可,不需要精细渲染(灰盒即可)
- 首帧质量 = 画风上限:首帧是整条视频的视觉基准,建议用生图模型精修后再传
- proxy 与首帧的构图要对齐(proxy 第一帧 ≈ 首帧的布局)
- 时长建议 2-10 秒起步;分辨率建议 proxy 720p 左右
- prompt 描述”想要的样子”(材质/光线/氛围),不描述运镜(运镜由 proxy 决定)
3.6 性能参考
Section titled “3.6 性能参考”场景 | 耗时 |
冷启动(节点有缓存) | 40 秒 - 4 分钟 |
冷启动(新节点全量拉取) | 15-60 分钟(看时段) |
首次推理(含模型加载) | ~250 秒 |
热推理 | 74-87 秒/条 |
显存占用 | 峰值 ~20.3 GiB / 31.4 GiB |
单条成本 | 约 0.05 元(87s × 2.08 元/h) |
3.7 实测示例视频
Section titled “3.7 实测示例视频”以下示例使用官方 GitHub 仓库提供的示例素材(VAST-AI-Research/EdenLive · examples/samples)。
官方仓库共 2 个场景(cryo-crossing、pulse-skirmish),每个场景含 30s 录屏 proxy + 首帧 PNG + prompt JSON。本服务实测矩阵(共 8 条,全部 1280×704):
案例 | 时长 | 渲染耗时 | 结果 |
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 字符上限,需截断使用(截断不影响主要画面效果)。
素材获取命令:
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 秒版):
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 上限,截断使用不影响主要画面) |
四、任务生命周期管理
Section titled “四、任务生命周期管理”操作 | 接口 | 说明 |
查状态 |
| |
停止 |
| ⚠️ 路径与创建不对称( |
恢复 |
| 节点有缓存时秒级恢复 |
成本控制建议:不用时停止任务(约 2.08 元/h),下次用 recover 秒级拉起(同节点缓存)。
五、故障排查
Section titled “五、故障排查”现象 | 原因 | 处理 |
创建任务报 | 镜像域名/账号组合不对 | 确认用 |
域名访问 404 | 端口填了非 8080 | 删任务重建,端口填 8080 |
域名访问 503 | 容器还在拉镜像/启动中 | 等 health 200(PodInitializing 期间正常) |
| 拉取超时或层问题 | 先看控制台完整报错(API 的 pod_event 是空的);拉取超时换个时段重发即可 |
推理 | v20 已知 hf_hub 冲突 | 见下方「已知限制」 |
想看容器日志 | 无 exec 权限 |
|
六、相关资源
Section titled “六、相关资源”- 官方项目页:<https://vast-eden.ai/?p=edenlive>
- 官方 GitHub:<https://github.com/VAST-AI-Research/EdenLive>
- 模型权重:<https://huggingface.co/VAST-AI/EdenLive>
- 推理框架:lightx2v(镜像内
/opt/lightx2v,官方 launcherscripts/edenlive/run_5090.sh)