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

213 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. 安装依赖
```bash
pip install -r requirements.txt
```
### 3. 环境配置
复制 `.env.example``.env` 并配置相关参数:
```bash
cp .env.example .env
```
编辑 `.env` 文件,配置以下参数:
```ini
# 数据库配置
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. 数据库迁移
```bash
# 初始化迁移
alembic init alembic
# 生成迁移文件
alembic revision --autogenerate -m "Initial migration"
# 执行迁移
alembic upgrade head
```
### 5. 启动应用
```bash
# 开发模式启动
python -m uvicorn src.main:app --reload --host 0.0.0.0 --port 8000
# 或者直接运行
python src/main.py
```
### 6. 访问API文档
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
## 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路由
### 数据库迁移
```bash
# 生成迁移文件
alembic revision --autogenerate -m "描述变更内容"
# 执行迁移
alembic upgrade head
# 回滚迁移
alembic downgrade -1
```
## 部署
### 生产环境配置
1. 修改 `alembic.ini` 中的数据库URL
2. 配置生产环境的 `.env` 文件
3. 使用生产级别的WSGI服务器如Gunicorn
4. 配置反向代理如Nginx
5. 设置日志轮转和监控
### Docker部署
```dockerfile
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](LICENSE) 文件了解详情。
## 联系方式
如有问题或建议,请提交 Issue 或联系项目维护者。