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

4.2 KiB
Raw Blame History

专项 D:生成链生产化深化 - 规划文档

专项负责人:小虾 🦐
创建时间2026-06-19 10:50 GMT+8
状态🔄 进行中


一、专项目标

把当前的 mock 生成逻辑改造为真实的媒体处理管线。

从"返回假数据"提升到"真正能生成视频"。


二、当前状态

当前实现(Mock

位置apps/worker/tasks.py::generate_video

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 接口

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

检查方式

ffmpeg -version

十、风险评估

已知风险

  1. FFmpeg 未安装

    • 影响:无法生成视频
    • 应对:提供安装文档
  2. 素材格式不兼容

    • 影响:FFmpeg 报错
    • 应对:添加格式检查和转码
  3. 生成时间长

    • 影响:任务超时
    • 应对:设置合理的超时时间
  4. 存储空间

    • 影响:磁盘满
    • 应对:设置配额限制

十一、执行顺序

  1. 环境检查:确认 FFmpeg 可用
  2. 创建模块video_processing 目录结构
  3. 实现 ProcessorVideoProcessor 核心类
  4. 集成 Worker:更新 generate_video 任务
  5. 测试验证:生成真实视频
  6. 文档更新:添加部署文档

状态:准备开始执行
预计时间1-2 小时