← 返回全部文章
·约 16 分钟

Video Gen Client

编程开发
本文目录
  1. 🚀 什么是 Video Gen Client?
  2. ✨ 核心功能一览
  3. 🛠️ 快速上手:5 分钟跑通示例
  4. 安装
  5. 核心代码示例:一行切换厂商
  6. 批量并发:这才是 async 的真正价值
  7. 📊 与手写对接的对比
  8. 💡 适用场景
  9. 场景一:多模型横向选型
  10. 场景二:批量素材生产
  11. 场景三:运镜与复杂运动控制
  12. 场景四:给 AI Agent 装上"拍视频"的手
  13. 用户群体总结
  14. 💰 定价方案
  15. 🎯 总结

📌 核心价值: 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 是什么、要几秒,剩下的它替你处理。

GitHub stars GitHub forks

核心定位:一个 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 一类客户端可以直接调用,不用自己再做一层工具封装。

💡 适用场景

场景一:多模型横向选型

Hailuo 细节对比实拍

功能说明:同一条 prompt 需要给四个模型各跑一遍的时候,是这套客户端最典型的用法。

输入要求:四家厂商各自的 API Key(用哪个填哪个,不用的可以不填)。

输出效果:四个 result.video_url,同一份材料横向对比挑最优。上面的实拍图就是典型的"分辨率与纹理差异对比"——Hailuo 在短时高分辨率上的优势,只有把几家结果摆在一起才看得出来。

适用场景:新项目选型、每月重新评估模型性价比、给客户做输出质量兜底。


场景二:批量素材生产

Seedance 30 秒成片预览

海螺界面实拍

功能说明:Seedance 2.5 支持 30 秒一镜到底并自带原生音频,适合做"一段完整叙事"而非几秒碎片。

输入要求:文本 prompt,可选 image_url 做图生视频。

输出效果:单条最长 30 秒、带音频的成片。

适用场景:社媒短片批量出样、分镜素材预生成、A/B 文案测试。


场景三:运镜与复杂运动控制

Kling 运镜实拍

可灵界面实拍

功能说明:Kling 系模型在运镜控制、多镜头叙事上的表现一直比较稳,适合对"镜头怎么动"有要求的镜头。

输入要求:文本 prompt + 可选参考图,支持 aspect_ratio 参数。

输出效果:具备明确镜头运动的片段,且 Kling 3.0 支持 5 语种原生音频。

适用场景:产品动态镜头、场景转场、需要口播或多语言配音的片段。


场景四:给 AI Agent 装上"拍视频"的手

MCP 与多入口

功能说明: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,最新信息请以项目仓库与各厂商官网为准。