开源!我用 Python 造了个 AI 视频生成框架,输入一句话自动出片

开源!我用 Python 造了个 AI 视频生成框架,输入一句话自动出片

一句话需求,AI 自动完成,视频直接输出。

最近做了一个开源项目:小云雀视频 Agent。它是一个纯粹的 AI 视频生成 Agent 框架,把用户输入的自然语言需求,自动转换成视频。

项目地址(MIT 协议):

https://github.com/xiaoyunque-video-agent/xiaoyunque-video-agent


为什么做这个

现在的 AI 视频工具很强,但用起来割裂感严重:

  1. 写好 Prompt,打开网页,粘贴,等待,下载
  2. 想换个风格?重写 Prompt,重来
  3. 想做多镜头?手动拼,累死人

如果这个过程让 AI 自己完成呢?这就是小云雀的设计目标:一个让 Agent 自动完成视频生成的框架。


快速体验

bash 复制代码
git clone https://github.com/xiaoyunque-video-agent/xiaoyunque-video-agent.git
cd xiaoyunque-video-agent
pip install -e ".[dev,cli]"

# 无需 API Key,Mock 模式直接测试
python examples/generate_video.py --prompt "古代侠客雨夜竹林行走" --mock

3 秒后就能看到完整的生成流程日志。整个框架的依赖只有 5 个:Pydantic v2、httpx、python-dotenv、openai 和 typer(CLI)。


核心架构

整个框架就三层:

复制代码
用户输入
  |
  v
Workflow Agent(工作流编排)
  |
  +-> Prompt Agent(LLM 优化 Prompt)
  |
  +-> Video Agent(提交 + 轮询 + 下载)
          |
          v
    Provider 抽象层
    小云雀 / Mock / Kling(未来)
          |
          v
     生成视频

Prompt Agent

把大白话转成结构化视频 Prompt。支持 OpenAI 和 DeepSeek,几行代码就能接入:

python 复制代码
class PromptGenerator(ABC):
    async def generate(self, user_input: str) -> VideoPrompt:
        ...

AI 自动输出场景、角色、运镜、风格、光影、动态等结构化字段。

Video Agent

管理视频任务的完整生命周期。提交任务后,用指数退避轮询:

python 复制代码
# 轮询间隔:2s -> 5s -> 10s -> 30s(上限)
# 超时时间:600 秒(10 分钟)
intervals = [2, 5, 10]
timeout = 600

Provider 抽象层

就三个抽象方法:

python 复制代码
class VideoProvider(ABC):
    async def submit_video(self, options) -> TaskInfo
    async def query_task(self, task_id: str) -> TaskInfo
    async def download_video(self, url: str, path=None) -> Path

接新平台只需要继承这个接口。框架内置小云雀和 Mock 两种实现,开发阶段用 Mock,测试通过切到真实 API,零代码改动。


在代码里调用

python 复制代码
import asyncio
from src.agents.workflow import WorkflowAgent

async def main():
    wf = WorkflowAgent()
    result = await wf.run("生成 30 秒赛博朋克城市夜景视频")
    print(result.local_path)  # 视频文件路径

asyncio.run(main())

Workflow Agent 的编排代码只有 100 行,每个步骤都有清晰的日志输出。


进阶:多镜头剧本生成

单一镜头不够?框架内置了 v2.0 多镜头工作流:

复制代码
剧本文本
  v
ScriptParser        解析为镜头列表
  v
CharacterExtractor   提取角色档案(外貌、服装)
  v
SceneExtractor       提取场景信息(时间、光影)
  v
ShotGenerator        逐镜头生成,跨镜头一致性
  v
AudioDesigner        设计音效和配乐
  v
VideoCompositor      合成最终视频

数据模型用 Pydantic v2 定义:

python 复制代码
class Shot(BaseModel):
    id: int                # 镜头编号
    duration: float        # 时长(秒)
    shot_type: ShotType    # 景别:远景/中景/特写/过肩
    subject: str           # 主体
    action: str            # 动作
    camera_movement: str   # 运镜方式
    characters_in_frame: list[str]  # 画面中的角色
    prompt: str            # 生成的 Prompt

每个镜头可以独立调整,然后一键合成最终视频。


技术栈

技术 用途
Python 3.13+ 开发语言
Pydantic v2 数据模型与配置管理
httpx 异步 HTTP 客户端
asyncio 全链路异步 I/O
openai SDK LLM Prompt 优化
typer CLI 命令行

测试覆盖:25 个测试文件,核心路径加异常路径全覆盖。Mock Provider 让 CI 测试零外部依赖。


命令行工具

bash 复制代码
# 生成视频
python -m src generate --prompt "古代侠客" --duration 10 --ratio 9:16

# 仅提交任务(不等待)
python -m src submit --prompt "测试视频" --duration 10

# 查询任务状态
python -m src query task_abc123

# 下载视频
python -m src download task_abc123 --output ./my_video.mp4

写在最后

做这个项目的初衷很简单:让视频生成像写代码一样,可以被编排、被自动化。

现在的版本接入了小云雀 API,但 Provider 抽象层已经为 Kling、Runway 留好了位置。框架也是完全开源的,欢迎加功能、提 PR。

仓库地址:

https://github.com/xiaoyunque-video-agent/xiaoyunque-video-agent

欢迎在评论区聊聊你们的 AI 视频使用场景。对框架有想法也可以直接提 Issue。

如果这篇文章对你有帮助,GitHub Star 是对开源最好的支持。


本文由 CSDN Writer 自动发布

相关推荐
城管不管18 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
Summer-Bright20 小时前
深度 | Agent框架大洗牌:AutoGen退场后的新秩序
人工智能·ai·语言模型·ai软件
土星云SaturnCloud21 小时前
抽水蓄能设备智慧运营:基于土星云边缘计算实现机组全生命周期预测性维护
服务器·人工智能·ai·边缘计算
wang_yb1 天前
用相关性分析消除“冗余特征”
ai·databook
阿文和她的Key1 天前
GPT-5.6 降价后, API 账单的三层漏斗该怎么拆
人工智能·gpt·ai·chatgpt
thesky1234561 天前
27届大模型岗面试准备(十四):多模态大模型 VLM——从视觉编码器到多模态推理的完整链路
人工智能·ai·大模型
一根数据线1 天前
BIM建模效率低?试试和AI工具配合使用
人工智能·ai·3d建模·3d模型·bim·ai建模·造形家
lianboxinwen1 天前
金融家装AI外呼自定义话术有哪些限制?
ai
ajassi20001 天前
AI语音智能体开发日记(三)解决小程序配网中的蓝牙命名与MAC地址获取问题
ai·apache·ai编程
张永伟营销1 天前
从SEO到GEO:技术人视角下的生成式引擎优化架构与实践
搜索引擎·ai·架构