Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

短视频智能生成系统

面向短视频自动生产场景的智能生成系统。系统以大语言模型为核心决策中枢,以多Agent机制完成复杂任务拆解与协同,以RAG机制实施内容准确性。

功能特性

  • 用户输入层: 接收视频主题、类型、风格、时长等需求
  • 任务规划层: 智能规划任务执行步骤和Agent调度
  • RAG知识增强: 基于向量检索的知识补充
  • 多Agent执行: 规划、检索、脚本、分镜、多模态、合成Agent
  • 结果输出: 脚本、分镜表、配音音频、字幕文件
  • 数据库持久化: 使用 SQLAlchemy 持久化用户和任务
  • 认证基础设施: 提供注册、登录、Bearer Token 鉴权
  • 存储抽象层: 支持本地存储,可扩展到 S3 / OSS / R2
  • 后台任务队列: 任务入库排队,worker 异步执行,支持重试与重启恢复

已接入服务

  • LLM: MiniMax M2.7 模型
  • TTS: MiniMax 语音合成 (speech-02-hd)
  • 视频合成: 桩实现(待接入)

快速开始

安装依赖

python3 -m pip install -r requirements.txt

启动服务

python3 main.py

访问 http://localhost:8000 查看Web界面

直接用 Uvicorn 启动

HOST=0.0.0.0 PORT=8000 uvicorn main:app

初始化后的核心能力

  • 任务不再依赖 data/tasks/*.json 作为主存储,默认写入数据库
  • 已提供 /api/auth/register、/api/auth/login、/api/auth/me
  • 默认使用本地 SQLite,可通过 DATABASE_URL 切换到 PostgreSQL
  • /api/generate 已改为真正的排队执行,不再依赖单次 HTTP 请求生命周期
  • 服务启动后会自动拉起内嵌 worker;也可以单独运行 python3 worker.py

API调用示例

curl -X POST http://localhost:8000/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "topic": "RAG是什么",
    "video_type": "knowledge",
    "style": "简洁易懂",
    "duration": 30,
    "audience": "大学生"
  }'

项目结构

video_generator/
├── config/          # 配置模块(包含MiniMax API配置)
├── core/            # 核心模块
│   ├── agents/      # 多Agent实现
│   │   ├── planner.py       # 规划Agent
│   │   ├── retriever.py     # 检索Agent
│   │   ├── script.py        # 脚本Agent(调用LLM)
│   │   ├── storyboard.py    # 分镜Agent
│   │   ├── multimodal.py    # 多模态Agent(调用TTS)
│   │   └── synthesizer.py   # 合成Agent
│   ├── llm/         # LLM客户端(MiniMax)
│   ├── tts/         # TTS客户端(MiniMax)
│   ├── rag/         # RAG知识增强
│   ├── pipeline/    # 流程编排
│   └── models/      # 数据模型
├── api/             # API路由
├── web/             # Web前端
└── main.py          # 入口文件

Agent说明

Agent 功能 调用服务
PlannerAgent 理解需求,输出整体任务计划 -
RetrieverAgent 从向量库检索相关知识片段 -
ScriptAgent 生成短视频脚本文案 MiniMax LLM
StoryboardAgent 拆分镜头,生成画面描述 -
MultimodalAgent 生成配音、字幕 MiniMax TTS
SynthesizerAgent 合并音视频,输出最终成品 桩实现

API接口

端点 方法 说明
/ GET Web界面
/api/generate POST 提交视频生成任务
/api/tasks/{task_id} GET 查询任务状态
/api/tasks/{task_id}/result GET 获取任务结果
/api/tasks GET 列出所有任务
/api/queue/status GET 查看队列和 worker 状态
/api/health GET 健康检查

配置说明

MiniMax API配置位于 config/__init__.py:

MINIMAX_API_KEY = "your-api-key"
APIMART_API_KEY = "your-api-key"
HOST = "0.0.0.0"
PORT = 8000
DATABASE_URL = "sqlite:///./data/app.db"
AUTH_SECRET_KEY = "replace-me"
STORAGE_BACKEND = "local"

推荐直接复制 .env.example 为 .env 后填写。

推荐生产配置

  • DATABASE_URL:推荐 PostgreSQL,例如 postgresql+psycopg://user:pass@host:5432/video_generator
  • AUTH_SECRET_KEY:必须替换为随机长字符串
  • STORAGE_BACKEND=s3:当你需要把视频、字幕放到对象存储时启用
  • QUEUE_ENABLE_EMBEDDED_WORKER=false:当你准备独立部署 worker 进程时关闭内嵌 worker
  • 如需 PostgreSQL 驱动,请额外安装:python3 -m pip install "psycopg[binary]>=3.1.18"
  • 如需 S3 / OSS / R2 存储,请额外安装:python3 -m pip install "boto3>=1.34.0"

部署

方式一:Docker 部署

构建镜像:

docker build -t video-generator .

启动容器:

docker run -d \
  --name video-generator \
  -p 8000:8000 \
  --env-file .env \
  -e PORT=8000 \
  video-generator

如果你想把 API 和 worker 分开部署,可以再启动一个独立 worker 容器或进程:

python3 worker.py

健康检查:

curl http://localhost:8000/api/health

方式二:云服务器部署

git clone <your-repo-url>
cd video_generator
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
cp .env.example .env
# 填入 MINIMAX_API_KEY 和 APIMART_API_KEY
HOST=0.0.0.0 PORT=8000 uvicorn main:app

如果你使用 systemd、supervisor、Railway、Render 或其他 PaaS,也可以直接复用:

uvicorn main:app --host 0.0.0.0 --port $PORT

单独运行 worker:

QUEUE_ENABLE_EMBEDDED_WORKER=false python3 worker.py

部署前检查清单

  • 已配置 MINIMAX_API_KEY
  • 已配置 APIMART_API_KEY
  • 已配置 AUTH_SECRET_KEY
  • 对外开放 PORT
  • 已确认 DATABASE_URL 可用
  • 已确认 worker 进程已启动(或启用了内嵌 worker)
  • 若需要视频拼接,目标环境建议安装 ffmpeg
  • 生产环境建议使用域名反代(Nginx / Caddy)

方式三:Railway 部署

这个项目已经可以直接走 Railway 的 Dockerfile 部署。

推荐做法:

  1. 把代码推到 GitHub
  2. 在 Railway 新建 Project 并选择 Deploy from GitHub repo
  3. 绑定一个 PostgreSQL 服务
  4. 在 Web Service 中配置环境变量:
    • MINIMAX_API_KEY
    • APIMART_API_KEY
    • AUTH_SECRET_KEY
    • DATABASE_URL(可直接使用 Railway 注入值)
    • STORAGE_BACKEND=local(演示环境可先这样,正式环境建议改为 s3)
  5. 部署完成后访问 /api/health 检查状态

说明:

  • 项目已兼容 Railway 常见的 postgres:// 或 postgresql:// 数据库连接串
  • 当前默认启用内嵌 worker,因此一个 Web Service 就能跑通提交与执行链路
  • 若后续任务量增大,建议拆成两个服务:一个 Web,一个 Worker
  • outputs/ 在 Railway 属于临时文件系统,正式环境建议接入 S3、R2 或 OSS 保存视频与字幕

输出说明

当前版本输出:

  • 脚本文案: 完整的短视频脚本文案
  • 分镜表: 每个镜头的画面描述、时长、转场
  • 配音音频: MiniMax TTS生成的语音文件(MP3)
  • 字幕文件: SRT格式的字幕文件

视频合成待接入外部服务(如Runway、Pika等)。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages