video-to-keyframes · git:20260310.704731f · 2026-03-10 · sha256 8ffed51149dba262

video-to-keyframes git:20260310.704731fA

Immutable. This exact content is served forever at /api/v1/blob/8ffed51149dba262.

---
name: "video-to-keyframes"
description: "Extracts video frames, detects cuts/segments, selects candidate keyframes, and generates review HTML galleries. Invoke when users ask for keyframes/cuts/segmentation/storyboard screening."
---

# 视频转关键帧(video-to-keyframes)

把用户提供的视频转成“候选帧池 → 转场/分段 → 候选关键帧集 → 复筛画廊页”,并把产物落盘到当天文件夹,方便后续分镜与生成。

## 何时调用

- 用户提供视频并说:抽帧/拆帧/关键帧/候选关键帧/镜头拆分/转场点/分段/分镜初筛
- 用户希望按固定工作流落盘,需要可复现的目录与文件(frames.json、cuts.json、segments.json、gallery.html 等)

## 依赖

- Python 3.10+
- numpy
- opencv-python

## 输入

- 视频文件路径(必填)
- 当天文件夹路径(可选,默认用视频所在目录;推荐 YYYY-MM-DD)
- 抽帧间隔(建议:30s≈1fps;变化快≈2fps)

## 输出(固定规范)

在 `<当天文件夹>` 下生成:

- `<当天文件夹>\_frames_<视频名>_<间隔>\`:候选帧池目录
  - `f_*.jpg`:抽帧图片
  - `frames.csv / frames.json / top_keep.json / meta.json`
  - `\_keyframe_candidates\`:候选关键帧集目录
    - `cuts.json`:转场点
    - `segments.json`:分段与每段代表帧
    - `segments_gallery.html`:分段可视化(每段1张代表帧)
    - `gallery.html`:候选关键帧画廊(逐个复筛)
    - `candidates.csv / candidates.json`
    - `selected.txt`:人工/AI复筛后的最终候选ID(每行一个 cand_id)
    - `prompt_pack.html`:复筛+提示词协作页(夜间模式,一键复制)
- `<当天文件夹>\<视频名>_拆分.txt`:汇总(转场点、分段、每段代表帧文件名)

## 一键运行(推荐)

```powershell
python .\skills\video-to-keyframes\resources\scripts\run_video_workflow.py "<视频路径>" --day-folder "<当天文件夹>" --every-seconds 0.5 --max-frames 600
```

注意:一键运行只负责产出文件,不等于完成复筛;必须打开 `gallery.html` 做人工/AI语义复筛,并把最终选择写入 `selected.txt`。

## 复筛要点(简版)

- 先看 `segments_gallery.html`:确认每段代表帧是否合理、分段是否过碎
- 再看 `gallery.html`:挑 6-12 张最“代表内容且可复现”的帧(不要只挑清晰但信息弱的帧)
- 将 cand_id 写入 `selected.txt`(每行一个三位数字或逗号分隔均可)