Skip to content

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

视频抽帧脚本

一键从视频中抽取关键画面并导出为 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

About

基于 FFmpeg 的视频抽帧脚本 | 支持按秒/按帧间隔、指定时间点、关键帧、智能抽帧(相似度去重),输出 PNG 图片序列,一键批量抽帧

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages