# video2ppt **Repository Path**: votzone/video2ppt ## Basic Information - **Project Name**: video2ppt - **Description**: 将视频文件批量转换为 PDF 或 PPTX(每帧一页),支持并发、断点续转、自定义起止时间和帧相似度阈值。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-07 - **Last Updated**: 2026-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Video2PPT — 视频批量转 PDF / PPTX 工具 将视频文件批量转换为 PDF 或 PPTX(每帧一页),支持并发、断点续转、自定义起止时间和帧相似度阈值。 --- ## 功能特性 | 功能 | 说明 | |------|------| | **双格式输出** | 支持 PDF(fpdf2)和 PPTX(python-pptx)两种格式 | | **批量并发** | 可选 1–5 个并发通道同时转换多个视频 | | **断点续转** | 已完成转换的视频自动跳过,无需重复处理 | | **帧相似度过滤** | 相似帧自动合并,每帧一页,按时间均匀采样 | | **起止时间** | 支持自定义开始/结束时间(HH:MM:SS) | | **自动输出目录** | 选择视频文件夹后自动将输出目录设为 `[视频文件夹]/ppt/` | | **进度追踪** | 实时进度条 + 已完成数/总数 + 逐文件日志 | --- ## 文件结构 ``` video2ppt/ ├── dist/ │ └── video2ppt.exe # 🎯 可直接分发的单文件可执行程序 ├── videos/ # 放置待转换的视频文件 ├── ppts/ # 转换后的输出目录(可自行更改) ├── gui.py # GUI 源码(用 venv 运行或重新打包) ├── video2ppt.spec # PyInstaller spec 文件 └── venv/ # Python 虚拟环境(开发用) ``` --- ## 快速开始 ### 方式一:直接运行(推荐) 双击 `dist\video2ppt.exe`,无需安装 Python 环境。 ### 方式二:从源码运行 ```bash cd D:\myspace\test\video2ppt venv\Scripts\python.exe gui.py ``` ### 方式三:重新打包 修改 `gui.py` 后,使用 PyInstaller 重新打包: ```bash cd D:\myspace\test\video2ppt venv\Scripts\python.exe -m PyInstaller --noconfirm --noconsole --onefile --clean --name video2ppt gui.py ``` 输出:`dist\video2ppt.exe` > ⚠️ 打包前请确保旧 exe 未被占用(关闭正在运行的程序或手动删除 `dist\video2ppt.exe`)。 --- ## 使用说明 ### 主界面 ``` ┌─────────────────────────────────────────────────────────┐ │ 路径设置 │ │ 视频文件夹: [_______________] [选择…] │ │ 输出文件夹: [_______________] [选择…] │ ├─────────────────────────────────────────────────────────┤ │ 转换参数 │ │ 输出格式: [PPTX ▾] │ │ 帧相似度: [━━━━━━●━━━] 0.75 (小→帧少,大→帧多) │ │ 开始时间: [00:00:00] 结束时间: [INFINITY] │ │ 并发数: [3](1-5) │ ├─────────────────────────────────────────────────────────┤ │ 待转换视频 │ │ 文件名 │ 输出名 │ 状态 │ │ video1.mp4 │ video1.pptx │ ✔ 完成 │ │ video2.mp4 │ video2.pptx │ 待转换 │ ├─────────────────────────────────────────────────────────┤ │ 进度: [━━━━━━━━━━━━━━━] 1/2 │ ├─────────────────────────────────────────────────────────┤ │ 日志 │ │ [深色终端风格日志输出] │ ├─────────────────────────────────────────────────────────┤ │ [🔍 扫描视频] [▶ 开始转换] [⏹ 取消] │ └─────────────────────────────────────────────────────────┘ ``` ### 操作流程 1. **选择视频文件夹** — 点击「选择…」,选中包含视频文件的文件夹。输出目录会自动设为该文件夹下的 `ppt/` 子目录。 2. **设置参数** — 选择输出格式(PPTX/PDF)、调整帧相似度、设置起止时间、选择并发数量。 3. **扫描** — 点击「🔍 扫描视频」,列表中会显示所有找到的视频。已存在的输出文件会标记为 `✔ 完成`。 4. **开始转换** — 点击「▶ 开始转换」,进度条实时更新,完成后日志显示统计结果。 5. **断点续转** — 转换中断后,重新打开软件并选择相同目录,已完成的视频会自动跳过。 ### 参数说明 | 参数 | 说明 | 默认值 | |------|------|--------| | 输出格式 | PDF 或 PPTX | PPTX | | 帧相似度 | 0.10–0.99,越小合并越多帧 | 0.75 | | 开始时间 | 截取起始时间,格式 `HH:MM:SS` | 00:00:00 | | 结束时间 | 截取结束时间,`INFINITY` 表示视频结尾 | INFINITY | | 并发数 | 同时转换的视频数量(1–5) | 3 | --- ## 技术细节 ### PPTX 生成 - 使用 `python-pptx`,每帧生成一页空白幻灯片 - 幻灯片尺寸固定为 16:9 宽屏(13.33" × 7.5") - 图片按原始宽高比居中放置,横向图片撑满宽度,纵向图片撑满高度 ### 帧提取 - 使用 OpenCV(cv2)逐帧读取视频 - 每秒采样一帧,按相似度阈值决定是否保留 - 相似度算法来自 `video2ppt` 包内置的 `compareImg` ### 依赖 | 包 | 用途 | |----|------| | `opencv-python` | 视频帧读取 | | `python-pptx` | PPTX 文件生成 | | `Pillow` | 图片尺寸读取 | | `fpdf2` | PDF 文件生成(内置) | | `video2ppt` | 帧相似度比较、PDF 生成 | | `PyInstaller` | 打包为单文件 exe | --- ## 常见问题 **Q: 转换后 PPTX 里图片是黑的?** > 检查视频文件是否完好,尝试用其他播放器打开确认。 **Q: 提示"依赖缺失"?** > 如果从源码运行,确保已激活虚拟环境 `venv\Scripts\python.exe gui.py`。 **Q: 打包后 exe 报毒?** > 单文件 exe 会自解压运行,部分杀毒软件会误报。签名或添加到白名单即可。 **Q: 相似度设多少合适?** > - 场景变化少(PPT 录屏):0.6–0.7 > - 正常视频:0.75–0.85 > - 快速切换画面多:0.85–0.95 --- ## 更新日志 - **2026-05-07** 新增断点续转功能,切换格式时重新检测完成状态 - **2026-05-07** 支持 1–5 并发通道批量转换 - **2026-05-07** 默认输出格式改为 PPTX,帧相似度默认 0.75 - **2026-05-06** 初始版本,支持 PDF/PPTX 双格式输出、自动输出目录、进度追踪