# Video Analyzer

> 从视频中提取连续帧、然后用视觉逐帧分析画面内容的技能，专为嵌入式软件开发调试设计。 当用户需要分析装置录像、找出显示屏中的逻辑异常（数值跳位、状态异常、界面错误等）时使用此技能。 触发场景（符合其中一条即触发，不要等用户说"用视频分析技能"）： - 用户提供了视频路径，要求分析、查问题、看哪里有异常 - 用户说视频里有"跳位""跳号""报告不连续""状态异常""数据乱跳"等现象 - 用户想从录像中找出某个具体问题发生的时间点 - 用户描述了嵌入式装置的显示屏或操作界面出现了异常，附有录像 注意：此技能不依赖预设规则——异常判断完全由 Claude 视觉分析完成，每次根据用户描述的具体现象来判断。

- Skill: `zhinkgit/video-analyzer` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add zhinkgit/video-analyzer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zhinkgit/video-analyzer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: zhinkgit (https://skillmd.com/u/zhinkgit)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zhinkgit/video-analyzer

---


## 工作流程

### 第一步：明确异常描述

从用户消息中提取：
1. **视频文件路径**（必须）
2. **要找的异常现象**（必须）——如果用户没说，问一句："请描述一下视频中应该出现什么异常？比如数值跳位、界面卡死、报告编号不连续等。"

### 第二步：提取帧

```bash
python "<SKILL_DIR>/scripts/extract.py" "<视频路径>" [--fps N] [--max-frames N]
```

- `<SKILL_DIR>` 是本 SKILL.md 所在目录的绝对路径
- 默认最多提取 60 帧（通常足够）；如视频较长或需要更细粒度，用 `--max-frames` 调大
- 如果用户关心快速变化的内容（如数字跳变），可用 `--fps` 指定更高帧率（如 `--fps 5`）
- 脚本输出 `MANIFEST=<路径>` 一行，以及完整帧列表

### 第三步：逐帧视觉分析

读取每一张帧图片（用 Read 工具读取图像文件），结合用户描述的异常现象，分析画面内容：

**分析策略：**
- 按时间顺序逐帧观察，记录每帧的关键信息（显示的数值、状态、界面元素）
- 与前一帧对比，找出异常变化点
- 对于"数值跳位"类异常：记录每帧的数值变化序列，标记出跳变位置
- 对于"状态异常"类：关注界面状态切换是否符合逻辑
- 对于"报告不连续"类：关注序号、编号、记录号是否有跳跃

**效率技巧：**
- 先快速浏览首帧、末帧和几个中间帧，建立对画面内容的理解
- 再针对可疑区域密集分析
- 如果帧数较多（>20），可先每隔 3-5 帧读一张做粗扫，确定大致范围后再细看

### 第四步：输出分析结果

向用户汇报：
1. **视频基本信息**（时长、分辨率）
2. **逐帧内容摘要**——简述每帧画面的关键数据/状态
3. **发现的异常**——精确到时间戳，描述"X 时刻 → Y 时刻 发生了什么"
4. **分析结论**——结合用户提供的代码或背景，推测可能的原因

### 第五步（可选）：保存分析报告

如有必要，将分析结论写入输出目录下的 `analysis_report.md`：

```
<视频所在目录>/video-analyzer/<视频名>/analysis_report.md
```

---

## 参数说明

| 参数 | 说明 | 默认 |
|------|------|------|
| `--fps N` | 提取帧率，N 越大帧越密，适合快速变化内容 | 自动（≈ max-frames ÷ 视频时长） |
| `--max-frames N` | 最多提取帧数 | 60 |

**经验参考：**
- 6 秒视频，默认约 10fps → 60 帧，可以看到每 0.1 秒的变化
- 60 秒视频，默认 1fps → 60 帧，每秒一张
- 关注细微数字变化：用 `--fps 5` 或更高
- 只需快速定位大致位置：用 `--max-frames 20`

---

## config.json

只存 ffmpeg 路径，首次运行时自动生成：

```json
{
  "ffmpeg_path": "C:/ffmpeg/bin/ffmpeg.exe"
}
```

