# 视频 SDK

建立在视觉与语音 SDK 之上：摄像头与麦克风一起开、带声录像、定时抽帧交给视觉模型、把录好的视频拆成关键帧与音轨分别分析。浏览器端用 `MediaRecorder` / `<video>` / `canvas`；批量与长视频交给 `aidc video`（基于 ffmpeg）。

```js
import { video } from "/developer/sdk/v1/aidc.js";
```

## 实时画面 + 声音

```js
const session = await video.openVideo({ video: document.querySelector("video") });

// 每 3 秒抓一帧检查（上一帧没处理完会自动跳过，不堆请求）
const stopSampling = session.sampleFrames(3000, async (photo) => {
  const r = await vision.inspect(photo, { task: "工位上有没有未戴安全帽的人" });
  if (r.verdict === "fail") alert(r.summary);
});

// 同时把现场声音转成文字
const transcript = await session.transcribe({ languages: ["zh"], onFinal: (id, t) => log(t) });

// 录一段带声视频
const recorder = await session.record();
const clip = await recorder.stop();

session.stop();
```

## 分析一段视频文件

```js
const frames = await video.extractFrames(file, { everySeconds: 5, maxFrames: 24 });
const report = await video.analyze(file, { task: "包装有没有破损", everySeconds: 5, transcribe: true });
// → { frames: [{ time, inspection }], transcript }
```

浏览器解码不了的格式（部分 mov / hevc），改用命令行。

## 命令行（ffmpeg）

```bash
aidc video frames line3.mp4 --every 2 --out frames/
aidc video inspect line3.mp4 --every 5 --task "包装有没有破损" --transcribe --json
```

`aidc video` 依赖 ffmpeg（公认的音视频基础设施，我们不自研替代品）。没装时命令会给出安装方式：macOS `brew install ffmpeg`、Ubuntu `sudo apt-get install -y ffmpeg`、Windows `winget install Gyan.FFmpeg`。

清单里声明：`"sdk": ["video", "vision", "voice", "model"]`、`"permissions": { "camera": true, "microphone": true }`。
