Video Gen Client
本文目录
📌 核心价值: Seedance、可灵、海螺、万相四家视频大模型,一套异步 API 全打通。
不用再为每家厂商各写一个 SDK 适配层:填一个 provider 参数就换模型,
asyncio.gather原生并发批量出片,还自带 Web UI 和 MCP Server。

🚀 什么是 Video Gen Client?
Video Gen Client(letorig/video-generator-client)是一个统一的异步 Python 视频生成客户端,用同一套 API 封装了当前最主流的四家视频大模型厂商:Seedance(字节跳动)、Kling(快手)、MiniMax / 海螺、Wan(阿里巴巴)。
它解决的是一个非常具体、也非常烦人的痛点:这四家的 API 长得完全不一样。
鉴权方式不一样、提交任务的字段不一样、返回的任务 ID 结构不一样、轮询状态的字段名不一样、下载视频的方式也不一样。你想做个"这条文案分别用四个模型跑一遍挑最好的"批量对比,光写四套适配层就够写一整天,还没算上并发控制和重试。
Video Gen Client 把这些差异全部收进一层抽象:你只需要告诉它 provider 是谁、prompt 是什么、要几秒,剩下的它替你处理。
核心定位:一个 async context manager 管四家厂商,task.wait() 统一收口所有轮询逻辑。
✨ 核心功能一览

README 里这张模型表是它最有含金量的部分——13 个模型 ID 全部登记造册,而且标注了每个版本的定位差异。比如 Seedance 2.5 是"30 秒一镜到底 + 原生音频",2.0 Mini 是"预算档,480p/720p,4–15 秒",Kling 2.5 Turbo 是"1080p,适合大批量"——这种颗粒度的选型信息,官方文档往往散落在好几个页面里。

整个项目分三层,结构非常干净:
- 接口层:Python async API、CLI(
video-gen)、FastAPI Web UI、MCP Server——四个入口走同一套内核 - 内核层:
catalog.py集中维护厂商/模型元数据,统一 Task 对象,polling.py处理异步轮询,video.py处理下载落盘 - 厂商层:
providers/下四个适配器(seedance / kling / minimax / wan),各管一段
关键设计:模型元数据集中在 catalog.py 一处,厂商改 API 或下线模型时只需要改这一个文件。
🛠️ 快速上手:5 分钟跑通示例
安装
git clone https://github.com/letorig/video-generator-client
cd video-generator-client
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activate
pip install -e ".[web]"
# 复制环境变量模板,填你要用的厂商密钥
cp .env.example .env
注意 .[web] 这个 extras —— Web UI 的服务端是 FastAPI,前端 HTML 直接打包在 Python 包里,没有 npm、没有 Node.js、没有前端构建步骤,这点对 Python 开发者非常友好。
核心代码示例:一行切换厂商
import asyncio
from video_gen import VideoClient
async def main() -> None:
async with VideoClient() as client:
task = await client.generate(
provider="seedance", # 换成 kling / minimax / wan 即可
model="2.5",
prompt="A cinematic slow-motion shot of a cyberpunk city in the rain",
duration=5,
)
result = await task.wait(on_update=lambda s: print("state:", s.state))
print("video:", result.video_url)
if __name__ == "__main__":
asyncio.run(main())
这是仓库 examples/seedance_text_to_video.py 的全部内容。整个流程只有三步:client.generate() 提交 → task.wait() 轮询等待 → result.video_url 拿结果。
批量并发:这才是 async 的真正价值
import asyncio
from video_gen import VideoClient
PROMPTS = [
"A snowy forest at dawn",
"Neon Tokyo street at night",
"A calm ocean with gentle waves",
]
async def main() -> None:
async with VideoClient() as client:
tasks = [
await client.generate(provider="wan", model="2.1", prompt=p, duration=5)
for p in PROMPTS
]
results = await asyncio.gather(*(task.wait() for task in tasks))
for prompt, result in zip(PROMPTS, results):
print(f"{prompt} -> {result.video_url}")
if __name__ == "__main__":
asyncio.run(main())
三条视频并行跑,总耗时约等于最慢的那一条。手写四套 SDK 时,光是让不同厂商的并发行为对齐就够折腾的。
注意:厂商 API 和模型 ID 会独立于本 SDK 变化,provider 适配器属于「集成代码」,厂商改版时可能需要更新。
📊 与手写对接的对比

这张表最值得看的是两行:
- 模型下线/改名:这是做视频应用长期维护最痛的一点。各家厂商隔三差五调整模型 ID,手写时要翻代码发版;这里只改
catalog.py。 - 给 Agent 用:仓库自带
mcp_server/server.py,stdio 模式的 MCP Server 直接暴露generate_video工具,Claude Code / Cursor 一类客户端可以直接调用,不用自己再做一层工具封装。
💡 适用场景
场景一:多模型横向选型

功能说明:同一条 prompt 需要给四个模型各跑一遍的时候,是这套客户端最典型的用法。
输入要求:四家厂商各自的 API Key(用哪个填哪个,不用的可以不填)。
输出效果:四个 result.video_url,同一份材料横向对比挑最优。上面的实拍图就是典型的"分辨率与纹理差异对比"——Hailuo 在短时高分辨率上的优势,只有把几家结果摆在一起才看得出来。
适用场景:新项目选型、每月重新评估模型性价比、给客户做输出质量兜底。
场景二:批量素材生产


功能说明:Seedance 2.5 支持 30 秒一镜到底并自带原生音频,适合做"一段完整叙事"而非几秒碎片。
输入要求:文本 prompt,可选 image_url 做图生视频。
输出效果:单条最长 30 秒、带音频的成片。
适用场景:社媒短片批量出样、分镜素材预生成、A/B 文案测试。
场景三:运镜与复杂运动控制


功能说明:Kling 系模型在运镜控制、多镜头叙事上的表现一直比较稳,适合对"镜头怎么动"有要求的镜头。
输入要求:文本 prompt + 可选参考图,支持 aspect_ratio 参数。
输出效果:具备明确镜头运动的片段,且 Kling 3.0 支持 5 语种原生音频。
适用场景:产品动态镜头、场景转场、需要口播或多语言配音的片段。
场景四:给 AI Agent 装上"拍视频"的手

功能说明:mcp_server/server.py 暴露的 generate_video 工具,让 Agent 客户端可以直接调用视频生成能力。
输入要求:provider、prompt,可选 model / image_url / duration / aspect_ratio。
输出效果:Agent 在你的指令下自己产片并返回视频 URL。
适用场景:自动自媒体流水线、Agent 自己做完调研再配一段视频、无人值守的内容管线。
用户群体总结
- ✅ AI 应用开发者:需要在产品里接多家视频模型、做降级容错的团队
- ✅ 短视频 / 自媒体团队:批量出样、多模型比价的日常需求
- ✅ Agent 开发者:想给 Claude Code / Cursor 之类客户端加"生成视频"能力
- ❌ 不适合:只想点几下网页出片、完全不碰代码的纯内容创作者——这类需求直接用各家官网 Web 界面更省事
💰 定价方案
开源协议:MIT。 客户端本身完全免费、可商用,代码在你自己机器上。
但要清楚一点:它不包模型额度。四个厂商的视频生成 API 都是按秒/按次计费的,价格与额度政策以各家官网为准。README 明确说明.Client 只是一个客户端封装,费用走你自己的厂商账号。
💡 成本建议:先用 480p 短时长、便宜档位跑通分镜和构图,通过以后再投高清终稿——这段 README 没写,但它是省钱鉄律。
🎯 总结
Video Gen Client 不是一个"又一个套壳前端",它解决的是工程层面真实存在的重复劳动:四套鉴权、四套轮询、四套错误处理、四套下载逻辑。
它的价值在"接第二家模型"的那一刻开始显现——第一次接 Seedance 你可能觉得手写也行,等你决定再加 Kling 做对比时,这套抽象就回本了。再加上自带的 FastAPI Web UI(无需前端构建)和 MCP Server,覆盖面在同体量项目里算相当完整。
需要提醒的是,项目诞生于 2026-09-14,还很新,README 自己也坦白承认"厂商 API 与模型 ID 独立于本 SDK 变更,适配器属于需要随之更新的集成代码"。如果你打算用在生产环境,建议把 provider 适配层纳入自己的回归测试。
推荐指数: ⭐⭐⭐⭐(满分 5 星,扣一星只是因为项目太新、适配层需持续跟进)
适合人群: 需要横向对比或降级容错的视频应用开发者、做无人值守内容管线的 Agent 工程师
GitHub 仓库: letorig/video-generator-client
数据截至 2026-09-18,最新信息请以项目仓库与各厂商官网为准。