一键从视频中抽取关键画面并导出为 PNG 图片。内置 5 种抽帧方式:按秒、按帧间隔、指定时间点、关键帧、智能抽帧。基于 FFmpeg 引擎,支持批量处理。
- 5 种抽取方式:
- 按秒抽帧:每 N 秒抽一帧(如每 5 秒)
- 固定间隔帧:每 N 帧抽一帧(如每 30 帧)
- 指定时间点:在指定时间点抽帧(如 00:00:05、00:00:15)
- 关键帧抽取:只抽关键帧(I 帧)
- 智能抽帧:基于相似度去重,自动保留视觉上显著不同的画面(阈值可调 0.5~0.95),可捕捉幻灯片文字变化、只留睁眼帧、从指定时间点开始
- 盒子自动生成配置窗口:启动前弹出运行参数界面,参数按「抽帧方式」联动显隐,并自动回填上次配置
- 右键菜单集成:选中视频 → 右键 → 视频抽帧
- 批量处理:支持同时选中多个视频文件批量抽帧
- PNG 无损输出:图片无损压缩,适合后续编辑
- 每视频一文件夹:输出到
<视频名>_frames子文件夹,多视频不混淆 - 自定义输出目录:可指定输出位置,留空则在视频所在目录下建子文件夹
- 智能跳过:已存在的输出自动跳过(可开启覆盖)
- 实时进度:抽帧过程中实时显示百分比与已处理时长
- 节点联动:可被其他脚本通过
/api/link调用,返回结果摘要与输出目录列表 - 定时任务:声明可被盒子调度,无人值守自动跑完
本脚本的运行环境、依赖组件及图形化窗口均依赖“不忙脚本盒子”,建议仅通过盒子安装和使用本脚本。
前置条件:安装好 不忙脚本盒子
- 打开盒子 → 脚本市场 → 搜索 「视频抽帧」
- 点击「安装」
-
直接启动
- 在不忙脚本盒子里点击「智能抽帧」卡片
- 在图像界面中添加视频文件并设定抽帧模式
- 点击执行,自动批量抽帧并在控制台显示进度
-
右键启动
- 在文件管理器中选中视频文件,右键点击,选择「视频抽帧」
- 在弹出的配置窗口确认参数,点击执行,自动批量抽帧并在控制台显示进度
-
快捷键启动
- 为脚本设置全局快捷键
- 选中视频后按下快捷键即可快速执行
- 按秒抽帧:适合制作缩略图、快速浏览视频内容
- 智能抽帧:与上一张已保留画面比较相似度,相似则跳过、显著不同才保存,能跨相似片段自动去重。阈值越高保留帧越多(0.95 几乎每个变化都保留,0.5 只留差别很大的画面)
- 检测幻灯片文字变化(refine):直方图会漏掉"画面静止但标题/文字变了"的场景,勾选后用 HOG/ORB 复核可捕捉(如 PPT)
- 仅保留睁眼帧:只保存检测到有人睁眼的画面(适合访谈/录课)
- 起始时间:从指定秒数开始抽取,留空从头开始
- 关键帧抽取:只输出 I 帧,数量取决于编码间隔,通常远小于总帧数
- 输出位置:默认在视频所在目录下建
<视频名>_frames文件夹,指定输出目录后在其下建文件夹 - 覆盖说明:默认跳过已存在的输出文件夹,勾选「覆盖已存在的文件」后会清空旧图重新抽取
本脚本已完成节点声明及数据回传。其他脚本可通过「不忙脚本盒子」提供的统一接口 /api/link 调用本脚本执行视频抽帧:
# 调用方示例(A 脚本内)
r = requests.post(f"{api_base}/api/link", json={
"script_id": "<视频抽帧 script_id>",
"data": {"target_paths": ["C:/a.mp4"]},
"params": {"mode": "second", "interval": 5},
})
result = r.json()["result"] # {code, msg, result, output_dirs}返回信封业务键:
result:处理结果摘要(如「成功 1 个 · 失败 0 个」)output_dirs:生成的帧图片目录绝对路径列表
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10+(64位) |
| 运行环境 | Python 3.12+, FFmpeg |
