如何从视频提取PPT成PDF?extract-video-ppt 安装、跑通与调参实战
【免费下载链接】extract-video-pptextract the ppt in the video项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt
期末前整理一门 90 分钟的录播课,真正有用的只有 30 页幻灯片,你却得逐帧快进、暂停、截图、命名,忙到深夜眼睛发花。这类"视频里翻 PPT"的活儿其实可以整包交出去:extract-video-ppt 会自动扫描视频画面,把每一页不重复的幻灯片截下来,最后拼成一份能直接打印的 PDF,你只负责敲一条命令。
上面这张就是它实际抽出来的某一帧,文件名里带着出现时间和相似度数值,方便你回头定位。
装好并跑通:从 pip 到第一条 evp 命令
环境要求很简单:一台装好 Python 3 的电脑,一条命令装完:
pip install extract-video-ppt装完系统会多出一个evp命令,先让它报个平安:
evp --help✅ 看到参数说明,就可以拿项目自带的素材开刀。仓库里的demo/目录备齐了演示视频、样例 PPTX 和成品 PDF,照着官方示例跑:
evp --similarity 0.6 --pdfname hello.pdf --start_frame 00:00:09 --end_frame 00:00:30 ./demo ./demo/demo.mp4这条命令里,./demo/demo.mp4是输入视频,./demo是结果输出目录,--pdfname指定 PDF 名字,其余参数下面细讲。其实最简形态也成立,默认值直接跑:
evp ./output ./demo/demo.mp4执行时屏幕会不断刷新处理百分比,结束后去./output里拿 PDF 就行。更习惯源码方式的话:
git clone https://gitcode.com/gh_mirrors/ex/extract-video-ppt cd extract-video-ppt python setup.py install它怎么知道"这一页换了":原理与模块分工
你可以把每帧画面想象成一杯"颜色配方":工具会把画面拆成 256 档色调的分布图,再和最近一次被保存的那帧逐档比对。两杯配方几乎一样,说明只是讲师挥了挥手、光标漂了一下,直接扔掉;配方整体变了,才认定换页并截图。大白话:它不关心"动没动",只关心"内容变没变"。
具体节奏是每秒抽一帧做一次比对,命中的帧存成 JPG,文件名自带时间点和相似度(比如frame00.00.09-0.5.jpg),最后统一合成 PDF,而且每页顶部会印上对应截图的文件名,查页很方便。
这套逻辑都放在video2ppt/目录下,分工很清晰:video2ppt/video2ppt.py负责读帧、调度、清理现场;video2ppt/compare.py负责相似度计算;video2ppt/images2pdf.py负责把截图拼成 PDF。整条流水线就是"抽帧 → 比对筛选 → 拼 PDF"三步。
四个参数速查
| 参数 | 作用 | 默认值 | 何时调整 |
|---|---|---|---|
--similarity | 相似度阈值,低于它才保存这一帧 | 0.6 | 抽出的页数偏多或偏少时 |
--pdfname | 输出 PDF 的文件名 | output.pdf | 想给每个视频定制 PDF 名时 |
--start_frame | 开始处理的时间点 | 00:00:00 | 只要视频中间某一段时 |
--end_frame | 结束处理的时间点 | INFINITY | 视频很长、只关心前段时 |
四个参数都不加也能跑,但想控制质量,--similarity是绕不开的主角。
相似度阈值:我常用的三档经验值
先建立方向感:阈值调高 = 更敏感,画面稍有变化就存,页数全但废图多;阈值调低 = 更苛刻,变化明显才存,页数精但可能漏页。我的三档经验:
- 动画、转场密集的演示片:0.4~0.5。一页带飞入动画的幻灯片,帧间差异本来就小,阈值太高整页会被并掉。
- 正常语速的讲课录像:保持默认 0.6 就好,换页能抓到,激光笔和鼠标晃动基本被过滤。
- 几乎静止的长录屏:0.7~0.8,只留真正的大改动,免得 PDF 里塞几十页几乎一样的画面。
我的做法是先默认值跑一遍:页数明显偏多就往上抬 0.1,明显漏页就往下压 0.1,两轮基本能定下来。
时间裁剪与报错速查
视频两小时、干货只有中间二十分钟,圈个时间段最省事:
evp --start_frame 00:10:00 --end_frame 00:25:00 ./output ./course.mp4时间写法是标准的时:分:秒。这里顺手把源码里会打印的报错整理成一张对照表:
| 提示 | 含义 |
|---|---|
| start >= end can not work | 起始时间晚于或等于结束时间,两个参数写反了 |
| Please check if the video url is correct | 视频路径不对或文件打不开,检查路径与格式 |
| video duration is not support | --start_frame超过了视频实际时长 |
| write file failed ! | 输出目录没有写权限,换个自己可控的目录 |
另外处理过程中会在当前目录建一个./.extract-video-ppt-tmp-data临时文件夹存放中间截图,正常跑完会自动清掉;万一中途强退残留了,手动删掉也不影响下次运行。
批量处理与超长视频的进阶思路
一个文件夹里的视频可以套个循环全跑完:
for v in *.mp4; do mkdir -p "out_${v%.mp4}" evp --similarity 0.6 --pdfname "${v%.mp4}.pdf" "out_${v%.mp4}" "$v" done单集特别长的片子建议分段:按小时切成几段分别提取,得到多份 PDF 后再用任意合并工具拼起来。好处是中途断了只丢当前这一段,重跑成本低;而且临时目录每次运行完都会清理,反复重跑也不会互相污染。
现在就去跑你的第一段视频
🎬 省下来的不只是截图的功夫,而是把"整理"从手工活变成一次命令的事:下次课前复习、归档会议录屏、备份自己的演讲录像,都会快很多。第一步很小:打开终端执行pip install extract-video-ppt,挑一段你最近看过的带 PPT 的录播,把最简命令evp ./output 你的视频.mp4敲下去。页数不合心意时别急着怀疑工具坏了,回到--similarity上调两下,你的最佳阈值很快就有手感。
【免费下载链接】extract-video-pptextract the ppt in the video项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考