# file2video **Repository Path**: dopa-cao/file2video ## Basic Information - **Project Name**: file2video - **Description**: 一个文件生成视屏的项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-11 - **Last Updated**: 2026-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # File2Video - 文档转视频系统 ## 项目简介 File2Video 是一款将 PPT/Word 文件转换为带语音解说的 MP4 视频的 Web 应用。用户上传文档后,系统自动将每一页渲染为图片,配合 Windows TTS 语音合成,通过 FFmpeg 合成音画同步的视频。 ## 技术栈 | 层级 | 技术 | |------|------| | 前端 | Vue 3 + Vite 5 + Element Plus + Axios + Vue Router | | 后端 | Spring Boot 2.7 + MyBatis + Lombok | | 数据库 | MySQL 8.0 + Redis | | 文档处理 | Apache POI 5.2(PPT/Word)+ PDFBox 2.0(PDF 渲染) | | 视频合成 | FFmpeg(需加入系统 PATH) | | 语音合成 | Windows SAPI(TTS,支持男声/女声/无语音) | ## 系统流程 ``` 上传文件 → 设置生成参数 → 文档逐页渲染为图片 → TTS 语音合成 → FFmpeg 音视频合成 → 下载/播放视频 ``` ## 项目结构 ``` file2video/ ├── backend/ # Spring Boot 后端 │ └── src/main/ │ ├── java/ # Java 源码 │ └── resources/# 配置文件(application.yml 等) ├── frontend/ # Vue 3 前端 │ └── src/ │ ├── api/ # Axios 接口封装 │ └── views/ # 页面组件 ├── uploads/ # 上传文件存放目录 ├── outputs/ # 生成视频输出目录 └── temp/ # 临时文件目录(渲染图片、音频片段等) ``` ## 核心功能 - **文件上传**:支持 PPTX/PPT/PDF/DOCX/DOC 格式 - **参数配置**:视频质量(1080P)、帧率(30fps)、编码(H.264)、语音类型(无语音/男声/女声) - **文档转图**:将文档每页渲染为 PNG 图片序列 - **语音合成**:调用 Windows 内置 SAPI 为每页生成 WAV 语音旁白,失败自动降级为无声视频 - **音画同步**:基于 FFprobe 获取每段音频精确浮点时长,作为对应页面视频显示时长,零累积误差 - **视频合成**:FFmpeg 将图片序列与音频合成 MP4,统一重采样 44100Hz/16bit,使用 `-c:a aac -shortest` 保证音画同步 - **在线播放/下载**:前端支持视频在线预览和文件下载 ## 环境要求 | 依赖 | 版本 | |------|------| | JDK | 11+ | | Maven | 3.x | | Node.js | 16+ | | MySQL | 8.0 | | Redis | 最新稳定版 | | FFmpeg | 需加入系统 PATH | | Windows TTS 语音包 | Microsoft Huihui / Kangkai(中文语音) | ## 快速启动 ### 1. 后端 ```bash cd backend mvn spring-boot:run ``` ### 2. 前端 ```bash cd frontend npm install npm run dev ``` ## 输出视频参数 | 参数 | 默认值 | |------|--------| | 视频格式 | MP4 | | 视频质量 | 1080P | | 帧率 | 30fps | | 编码 | H.264 | | 音频编码 | AAC | ## 注意事项 - FFmpeg 必须加入系统 PATH,否则视频合成失败 - 音画同步采用精确浮点时长匹配,取消手动配置每页时长,完全由 TTS 音频实际时长驱动 - 若 Windows SAPI 语音合成失败,系统自动降级为无声视频,不中断主流程 - `uploads/`、`outputs/`、`temp/` 目录由后端自动管理,无需手动清理