一个强大的视频PPT提取工具,采用双流(Dual-Stream)采集架构,能够从视频中智能提取PPT幻灯片,同时生成高精度全量存档和低精度去重摘要两组数据。
系统采用创新的双流并行采集设计,同时生成两组数据:
- 🎯 目标:不计成本地保留所有细节,作为人工核查的"底片"
- ⚡ 智能触发:检测到显著变化后,一旦稳定就立即捕获
- 🖼️ 原始画质:JPEG质量100,无损保存
- 📄 直接生成PPT:自动将所有捕获的帧生成PPT文件
- 🚫 不去重:保留所有捕获的帧,确保不遗漏任何细节
- 🎯 目标:极高的可读性与低冗余,用于快速浏览
- 🧠 深度去重:智能检测内容变化,即使时间戳在变,如果核心业务内容没有实质变化则跳过
- 💾 优化存储:降低分辨率(70%)+ JPEG压缩(质量75),大幅减小文件体积
- 📄 直接生成PPT:自动将去重后的帧生成PPT文件
- 📊 智能判断:结合运动检测和哈希比对,确保只保存有意义的帧
- ✅ 鲁棒运动检测:改进的motion_score计算,更好地区分翻页动作和视频压缩噪点
- ✅ 形态学操作:自动消除鼠标指针、激光笔等小物体干扰
- ✅ ROI机制:可选择性忽略底部(任务栏)和右侧(摄像头)区域
- ✅ 多线程处理:自动利用多核CPU,并行处理多个视频文件
- ✅ 状态机触发:检测到显著变化后,一旦进入相对稳定就立即捕获
- Python版本:3.6 或更高版本
- 操作系统:Windows / Linux / macOS
- 依赖库:
- OpenCV (cv2)
- NumPy
- python-pptx
- 标准库:os, sys, tempfile, shutil, threading, concurrent.futures
pip install opencv-python numpy python-pptx或者使用requirements.txt(如果提供):
pip install -r requirements.txt在脚本所在目录下创建 视频 文件夹,将需要处理的视频文件放入其中。
支持的视频格式:
.mp4.avi.mov.mkv.flv.wmv.m4v
-
准备视频文件
项目目录/ ├── tiqu.py └── 视频/ ├── video1.mp4 ├── video2.mp4 └── ... -
运行脚本
python tiqu.py
-
查看结果 处理完成后,PPT文件将保存在
output_ppts文件夹中:output_ppts/ ├── video1_高精度.pptx # Group A:高精度全量PPT ├── video1_低精度.pptx # Group B:低精度去重PPT ├── video2_高精度.pptx ├── video2_低精度.pptx └── ...
在 tiqu.py 文件中可以修改以下配置:
# 视频文件夹名称(默认:"视频")
VIDEO_FOLDER = "视频"
# 输出文件夹名称(默认:"output_ppts")
OUTPUT_FOLDER = "output_ppts"在 process_video 函数中可以调整以下参数:
group_a_motion_threshold=1.5, # 运动阈值(%):检测显著变化(翻页动作)
# 值越大,越容易忽略微小变化
# 推荐范围:1.0-2.0
group_a_min_duration=0.6, # 静止时长(秒):画面稳定后保存
# 值越小,捕获越灵敏,但可能捕获到动画中间
# 推荐范围:0.5-0.8
group_a_quality=100, # JPEG质量(1-100):100为最高质量
# 推荐:100(原始画质)group_b_motion_threshold=1.5, # 运动阈值(%):低于此值认为内容未变化
# 值越大,越容易忽略微小变化
# 推荐范围:1.0-2.0
group_b_hash_threshold=5, # 深度去重阈值:汉明距离小于此值认为重复
# 值越大,去重越宽松
# 推荐范围:3-8
group_b_scale_factor=0.7, # 分辨率缩放因子:0.7表示缩放到70%
# 值越小,文件越小,但画质越低
# 推荐范围:0.5-0.8
group_b_quality=75, # JPEG压缩质量(1-100)
# 值越小,文件越小,但画质越低
# 推荐范围:60-85use_morphology=True, # 是否使用形态学操作消除鼠标干扰
# True:启用(推荐)
# False:禁用
ignore_bottom_ratio=0.0, # 忽略底部区域比例(0.0-1.0)
# 0.0:不忽略
# 0.1:忽略底部10%(适合有任务栏的视频)
ignore_right_ratio=0.0, # 忽略右侧区域比例(0.0-1.0)
# 0.0:不忽略
# 0.1:忽略右侧10%(适合有摄像头的视频)output_ppts/
├── [视频名称1]_高精度.pptx # Group A:高精度全量PPT
├── [视频名称1]_低精度.pptx # Group B:低精度去重PPT
├── [视频名称2]_高精度.pptx
├── [视频名称2]_低精度.pptx
└── ...
- 格式:
[视频名称]_高精度.pptx - 示例:
lecture01_高精度.pptx - 说明:
- 包含所有捕获的帧(不去重)
- 原始画质保存
- 每张幻灯片对应一个捕获的帧
- 格式:
[视频名称]_低精度.pptx - 示例:
lecture01_低精度.pptx - 说明:
- 只包含去重后的关键帧
- 降低分辨率(70%)和压缩质量(75%)
- 文件体积更小,适合快速浏览
- 自适应尺寸:图片自动适应PPT页面,保持宽高比
- 居中显示:图片在幻灯片中居中显示
- 标准尺寸:PPT页面尺寸为 10英寸 × 7.5英寸(标准演示文稿比例)
系统使用改进的 calculate_robust_motion_score() 函数:
- 像素差异计算:计算两帧之间的绝对差异
- 自适应阈值:使用阈值过滤微小变化(默认25)
- 变化区域占比:计算变化像素占总像素的百分比
- 整体亮度检测:检测整体亮度变化(用于检测翻页)
- 综合评分:结合区域占比和亮度变化,生成0-100的运动分数
- 策略:不去重,保留所有捕获的帧
- 触发机制:检测到显著变化(翻页)后,一旦画面稳定就捕获
- 原因:作为"底片",需要完整记录所有有意义的帧
- 策略:深度去重
- 方法:
- 运动检测:计算运动分数,低于阈值认为未变化
- 哈希比对:使用dHash计算图像哈希,比较汉明距离
- 双重判断:运动分数高 或 哈希差异大 → 保存
- ROI提取:根据配置忽略底部/右侧区域
- 高斯模糊:去除视频压缩噪点(21x21核)
- 形态学操作:开运算消除小物体(鼠标、激光笔等)
- 运动检测:计算与上一帧的差异
- 决策保存:根据Group A/B的策略决定是否捕获
- 临时存储:捕获的图片先保存到临时文件夹
- PPT生成:视频处理完成后,将所有图片自动生成PPT文件
- 清理临时文件:PPT生成后自动删除临时图片文件
A: Group A采用智能触发机制,检测到变化就捕获,目的是保留所有细节。如果觉得幻灯片太多,可以:
- 增加
group_a_motion_threshold(如改为2.0),减少捕获频率 - 增加
group_a_min_duration(如改为0.8),要求更长的稳定时间 - 使用Group B进行快速浏览(已深度去重)
A: 可能的原因:
group_b_motion_threshold设置过高,导致微小变化被忽略group_b_hash_threshold设置过小,导致相似但不同的页面被去重
解决方案:
- 降低
group_b_motion_threshold(如改为1.0) - 增加
group_b_hash_threshold(如改为8)
A: 优化建议:
- 系统会自动使用多线程,无需手动配置
- 如果视频很多,可以分批处理
- 增加
group_a_motion_threshold和group_a_min_duration可以减少Group A的捕获频率 - Group B已经过优化,处理速度较快
A: 修改通用参数:
ignore_bottom_ratio=0.1, # 忽略底部10%(任务栏)
ignore_right_ratio=0.1, # 忽略右侧10%(摄像头)A: 支持常见视频格式:
.mp4,.avi,.mov,.mkv,.flv,.wmv,.m4v
如果遇到不支持的格式,可以使用FFmpeg转换:
ffmpeg -i input.xxx -c:v libx264 -c:a copy output.mp4A:
- Group A:修改
group_a_quality(1-100,默认100) - Group B:
- 修改
group_b_scale_factor(分辨率缩放,默认0.7) - 修改
group_b_quality(JPEG质量,默认75)
- 修改
- ✨ 改为直接生成PPT文件,无需手动整理图片
- 🎯 Group A采用智能触发机制,不再固定时间间隔采样
- 🎯 优化采样策略,文件数量更合理
- ✨ 新增双流采集功能
- ✨ Group A:高精度全量组
- ✨ Group B:低精度去重组
- 🎯 优化运动检测算法
- 🎯 改进去重策略
- ✨ 基础PPT提取功能
- ✨ 状态机触发机制
- ✨ 形态学操作消除干扰
- ✨ ROI机制
本项目采用 MIT 许可证。
欢迎提交Issue和Pull Request!
如有问题或建议,请通过Issue反馈。
注意:本工具采用"宁肯重复,绝不漏掉"的策略,Group A会生成较多幻灯片。建议使用Group B进行快速浏览,需要细节时再查看Group A。所有图片会自动生成PPT文件,无需手动整理。