banana-video/README.md
2025-08-31 18:38:41 +08:00

5.4 KiB
Raw Blame History

AI视频分镜生成器

基于FastAPI和领域驱动设计DDD的AI视频分镜生成系统支持提示词管理、项目管理、素材分析、分镜生成等功能。

功能特性

  • 提示词管理: 支持创建、更新、删除提示词模板
  • 项目管理: 完整的项目生命周期管理
  • 素材分析: 使用AI自动分析图片素材内容
  • 分镜生成: 基于AI生成视频分镜内容
  • 图片生成: 使用Gemini生成分镜首帧图
  • 视频生成: 支持生成分镜视频需要实现具体API
  • 文件存储: 集成七牛云存储服务

技术架构

  • 编程语言: Python 3.10+
  • Web框架: FastAPI
  • 架构模式: 领域驱动设计DDD分层架构
  • 数据库: PostgreSQL + SQLAlchemy 2.0
  • 数据库迁移: Alembic
  • AI服务: Google Gemini + OpenRouter
  • 存储服务: 七牛云

项目结构

.
├── alembic/                    # 数据库迁移
├── src/
│   ├── api/                    # API层
│   │   ├── dependencies.py     # 依赖注入
│   │   └── routes/            # 路由定义
│   ├── application/            # 应用层
│   │   ├── schemas/           # 数据传输对象
│   │   └── use_cases/         # 应用用例
│   ├── domain/                 # 领域层
│   │   ├── entities/          # 领域实体
│   │   ├── repositories/      # 仓储接口
│   │   └── services/          # 领域服务
│   ├── infrastructure/         # 基础设施层
│   │   ├── database/          # 数据库相关
│   │   └── external/          # 外部服务客户端
│   └── main.py                # 应用入口
├── .env.example               # 环境变量示例
├── requirements.txt            # 项目依赖
└── README.md                  # 项目说明

快速开始

1. 环境准备

  • Python 3.10+
  • PostgreSQL 数据库
  • 七牛云账号
  • Google AI API Key
  • OpenRouter API Key

2. 安装依赖

pip install -r requirements.txt

3. 环境配置

复制 .env.example.env 并配置相关参数:

cp .env.example .env

编辑 .env 文件,配置以下参数:

# 数据库配置
DATABASE_URL="postgresql://user:password@host:port/dbname"

# 七牛云配置
QINIU_ACCESS_KEY="your_qiniu_access_key"
QINIU_SECRET_KEY="your_qiniu_secret_key"
QINIU_BUCKET_NAME="your_qiniu_bucket_name"
QINIU_DOMAIN="your_qiniu_cdn_domain"

# AI模型配置
GOOGLE_API_KEY="your_google_ai_api_key"
OPENROUTER_API_KEY="your_openrouter_api_key"
OPENROUTER_BASE_URL="https://openrouter.ai/api/v1"

4. 数据库迁移

# 初始化迁移
alembic init alembic

# 生成迁移文件
alembic revision --autogenerate -m "Initial migration"

# 执行迁移
alembic upgrade head

5. 启动应用

# 开发模式启动
python -m uvicorn src.main:app --reload --host 0.0.0.0 --port 8000

# 或者直接运行
python src/main.py

6. 访问API文档

API端点

提示词管理

  • GET /api/v1/prompts - 获取所有提示词
  • POST /api/v1/prompts - 创建或更新提示词
  • DELETE /api/v1/prompts/{prompt_id} - 删除提示词

项目管理

  • GET /api/v1/projects - 分页获取项目列表
  • POST /api/v1/projects - 创建新项目
  • GET /api/v1/projects/{project_id} - 获取项目详情

素材管理

  • POST /api/v1/projects/{project_id}/assets - 上传并分析素材

分镜生成

  • POST /api/v1/projects/{project_id}/generate-storyboards - 生成分镜
  • POST /api/v1/storyboards/{storyboard_id}/generate-frame - 生成首帧图
  • POST /api/v1/storyboards/{storyboard_id}/generate-video - 生成视频

文件上传

  • POST /api/v1/qiniu/upload-token - 获取七牛云上传Token

开发指南

添加新的领域实体

  1. src/domain/entities/ 中创建实体类
  2. src/infrastructure/database/models.py 中添加数据库模型
  3. src/domain/repositories/ 中定义仓储接口
  4. src/infrastructure/database/repository_impl/ 中实现仓储
  5. src/application/schemas/ 中添加数据传输对象
  6. src/application/use_cases/ 中添加应用用例
  7. src/api/routes/ 中添加API路由

数据库迁移

# 生成迁移文件
alembic revision --autogenerate -m "描述变更内容"

# 执行迁移
alembic upgrade head

# 回滚迁移
alembic downgrade -1

部署

生产环境配置

  1. 修改 alembic.ini 中的数据库URL
  2. 配置生产环境的 .env 文件
  3. 使用生产级别的WSGI服务器如Gunicorn
  4. 配置反向代理如Nginx
  5. 设置日志轮转和监控

Docker部署

FROM python:3.10-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"]

贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

联系方式

如有问题或建议,请提交 Issue 或联系项目维护者。