Files
xiaoxia-saas/docs/专项D-生成链生产化深化-规划.md

243 lines
4.2 KiB
Markdown
Raw Permalink 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.
# 专项 D:生成链生产化深化 - 规划文档
**专项负责人**:小虾 🦐
**创建时间**2026-06-19 10:50 GMT+8
**状态**:🔄 进行中
---
## 一、专项目标
**把当前的 mock 生成逻辑改造为真实的媒体处理管线。**
从"返回假数据"提升到"真正能生成视频"。
---
## 二、当前状态
### 当前实现(Mock
**位置**`apps/worker/tasks.py::generate_video`
```python
def generate_video(task_id: str):
# Mock: 直接创建一个假的生成结果
session.add(GeneratedVideoModel(...))
session.commit()
```
**问题**
- 没有真实的视频处理
- 返回的是假的文件路径
- 无法真正下载视频
---
## 三、目标实现
### 真实生成流程
```
1. 获取生成任务
2. 加载素材库中的素材
3. 分析素材元数据(时长/分辨率/编码)
4. 根据策略选择素材
5. 使用 FFmpeg 进行视频合成
- 拼接视频片段
- 添加转场效果
- 混音(如有配音)
6. 生成缩略图
7. 上传到 MinIO
8. 创建 GeneratedVideo 记录
9. 更新任务状态
```
---
## 四、技术方案
### 方案选择:使用 FFmpeg
**理由**
- 功能强大,支持几乎所有视频格式
- Python 有成熟的 wrapperffmpeg-python
- 性能好,命令行工具稳定
**替代方案**
- MoviePy(太慢,不适合生产)
- OpenCV(功能有限)
- 云服务(成本高)
---
## 五、实现计划
### Phase 1:基础框架(本次)
- [ ] 安装 ffmpeg-python 依赖
- [ ] 创建 `VideoProcessor`
- [ ] 实现简单的视频拼接
- [ ] 生成缩略图
- [ ] 上传到 MinIO
- [ ] 更新 worker 逻辑
### Phase 2:高级功能(后续)
- [ ] 转场效果
- [ ] 字幕叠加
- [ ] 配音混音
- [ ] 滤镜效果
- [ ] 质量优化
---
## 六、架构设计
### 新增模块
```
apps/worker/
└── video_processing/
├── __init__.py
├── processor.py # VideoProcessor 核心类
├── ffmpeg_wrapper.py # FFmpeg 命令封装
├── thumbnail.py # 缩略图生成
└── strategies.py # 生成策略
```
### VideoProcessor 接口
```python
class VideoProcessor:
def generate_video(
self,
assets: List[Asset],
strategy: Strategy,
output_path: str
) -> VideoResult:
"""生成视频"""
pass
def generate_thumbnail(
self,
video_path: str,
timestamp: float = 1.0
) -> str:
"""生成缩略图"""
pass
```
---
## 七、MVP 范围(本次实现)
### ✅ 必须实现
1. **简单拼接**
- 把多个视频素材按顺序拼接
- 输出单个 MP4 文件
2. **缩略图**
- 从视频第 1 秒截图
3. **存储**
- 上传到 MinIO
- 返回正确的文件路径
4. **元数据**
- 正确记录时长/分辨率/大小
### ❌ 暂不实现
- 转场效果
- 字幕叠加
- 配音混音
- 复杂策略
---
## 八、验收标准
### 成功标准
- ✅ 能从素材库选择素材
- ✅ 能生成真实的 MP4 文件
- ✅ 文件能正常播放
- ✅ 缩略图正常显示
- ✅ 能从前端下载
### 失败标准
- ❌ FFmpeg 报错无法生成
- ❌ 生成的文件无法播放
- ❌ 文件路径错误
---
## 九、依赖和环境
### 系统依赖
- FFmpeg 4.0+ (需要预装)
- Python 3.12+
### Python 依赖
```
ffmpeg-python==0.2.0
pillow>=10.0.0
```
### 检查方式
```bash
ffmpeg -version
```
---
## 十、风险评估
### 已知风险
1. **FFmpeg 未安装**
- 影响:无法生成视频
- 应对:提供安装文档
2. **素材格式不兼容**
- 影响:FFmpeg 报错
- 应对:添加格式检查和转码
3. **生成时间长**
- 影响:任务超时
- 应对:设置合理的超时时间
4. **存储空间**
- 影响:磁盘满
- 应对:设置配额限制
---
## 十一、执行顺序
1. **环境检查**:确认 FFmpeg 可用
2. **创建模块**video_processing 目录结构
3. **实现 Processor**VideoProcessor 核心类
4. **集成 Worker**:更新 generate_video 任务
5. **测试验证**:生成真实视频
6. **文档更新**:添加部署文档
---
**状态**:准备开始执行
**预计时间**1-2 小时