---
name: video-frame-extractor
description: 汽车环车视频抽帧处理。用于 video_frame_extractor 能力：从车辆环车视频、本地视频路径、/upload 路径或可访问视频 URL 按指定 fps 抽取关键帧图片，写入共享 workspace/video_info.json，作为 damage-detector、damage-grounding、best-frame-selector、scratch-report-generator 的前置步骤；纯计算，不调用 AI 模型。
license: MIT
metadata:
  version: "1.0.0"
  category: vehicle-inspection
  skillType: compute-entry
  aliases: ["video_frame_extractor"]
  tags: ["vehicle", "video", "ffmpeg", "frames", "环车检测", "抽帧"]
---

# 视频抽帧处理

当用户提供环车视频并需要进行旧伤检测时，先用 `execute_skill` 调用本技能。

```json
{
  "name": "video-frame-extractor",
  "input": {
    "videoUrl": "/upload/20260514/car.mp4",
    "fps": 5,
    "quality": 90,
    "taskId": "order_10001"
  }
}
```

## 工作流程

1. 解析 `videoUrl`。支持本地路径、`/upload/...`、`http://localhost/...`、`http://127.0.0.1/...` 和可直接下载的视频 URL。
2. 使用 `ffprobe` 读取视频时长、分辨率、原始帧率和总帧数。
3. 使用 `ffmpeg` 按 `fps` 抽帧到共享 workspace 的 `frames/` 目录。
4. 写入 `workspace/video_info.json`，包含视频信息和帧列表。

## 输入

- `videoUrl`: 必填，视频路径或 URL。
- `fps`: 可选，默认 `5`，范围 `0.2-10`。
- `quality`: 可选，默认 `90`，范围 `1-100`。
- `taskId`: 可选，不传则自动生成。

## 输出

返回 `taskId`、`workspacePath`、`frameCount`、`videoInfo`。后续技能必须复用同一个 `taskId`。

## 约定

- 需要 Node.js 18+。
- 共享 workspace 根目录优先读取 `VEHICLE_SCRATCH_WORKSPACE_ROOT`，其次兼容 `RZYX_AI_WORKSPACE_ROOT`，否则使用 `RZYX_AI_DATA_DIR/workspace/vehicle-scratch-inspection`。
- 如果系统 PATH 里的 `ffmpeg/ffprobe` 不可用，可运行 `bash scripts/make.sh fix` 安装 `@ffmpeg-installer`，或通过 `FFMPEG_PATH`、`FFPROBE_PATH` 指定二进制路径。
- 在 AIflow 生产运行时，宿主会注入 `RZYX_AI_DATA_DIR`、`RZYX_AI_UPLOAD_ROOT`、`RZYX_AI_WORKSPACE_ROOT`；本技能不依赖百度 OCR 或百度车损 API。
- 用中文回答所有内容。
