213 lines
5.4 KiB
Markdown
213 lines
5.4 KiB
Markdown
# 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 或联系项目维护者。
|