# 生成并选定视频版本

为每个镜头做一个视频版本，检查每个版本，没通过的镜头重做，留下你想要的版本。

一个版本就是为一个镜头做的一段视频。一个镜头可以有好几个版本，其中一个是选定版本，剪辑用的就是它。你的 Agent 运行视频环节。你看这些版本，说留哪一个。

在你认可预览片之后再开始，见[做预览片](/zh-cn/docs/cli/make-the-mock)。预览片认可之前就做视频版本，会打印一条警告并记录下来。想照样做下去，加 `--reason` 写上你的理由。这里的每条命令都要求这台电脑已经登录。

## 做一个版本

1. 你的 Agent 在一个镜头的文件夹里为它做版本：

```bash Terminal
minicut gen video episodes/ep01/clips/c01
```

这条命令会用掉积分。它先显示要做什么，花之前先问你。你说好之后，它才发出任务。

2. 一次做很多镜头时，你的 Agent 用 `minicut gen batch`。见[生成](/zh-cn/docs/cli/generate)。
3. 你的 Agent 把做好的版本存进项目：

```bash Terminal
minicut jobs --wait 300
```

4. 每个版本存在它镜头的文件夹里，先是 `t01`，再是 `t02`，依此类推。一个镜头同一时间只有一个任务。如果这个镜头已经有任务，命令会说出是哪一个。加 `--again` 就在它旁边再做一个版本。
5. 想看每个镜头进行到哪里，运行：

```bash Terminal
minicut shots --episode ep01
```

任务运行时，镜头显示 `queued`、`running` 或 `saving`。任务失败时显示 `failed`。版本检查之前显示 `unchecked`，版本没通过显示 `fail`，版本做好显示 `done`。见 [minicut shots](/zh-cn/docs/cli/projects#minicut-shots)。

## 检查版本

1. 你的 Agent 运行：

```bash Terminal
minicut loop run videos
```

2. 对每个镜头，环节检查它的选定版本。如果镜头还没有选定版本，就检查最新的版本。没有视频版本的镜头会以 `no video take yet` 失败。
3. 每个失败，环节都打印一行，带上修法：

| 失败 | 意思 |
|---|---|
| `the take has N s and the shot is N s` | 版本比镜头短了 0.3 秒以上，剪辑会把最后一帧定住 |
| `the picture stops moving N to N s` | 画面静止了 1 秒或更久 |
| `the light drops from N s and stays down` | 版本变暗，并且一直暗着 |
| `the picture changes to another shot at N s` | 版本里有一处分镜表没要求的切换 |
| `the words heard do not match` | 版本里的台词和镜头的台词对不上 |
| `nobody has looked at this take yet` | 还没有人，也没有新的 Agent 看过这个版本的图片表并回答它的问题 |

4. 如果是版本里面有切换，修法可能是 `TRIM: keep this take, end the shot at N s`。你的 Agent 保留这个版本，并按那一行说的位置裁短镜头。
5. 其他失败的修法是再做一个版本：对那个镜头运行 `minicut gen video`，那一行里写着 `take 2 of 3`。只有那个镜头会重做。

## 说出哪里不对

版本没通过检查时，你的 Agent 把问题写进镜头的提示词，让下一个版本有所改变：

```bash Terminal
minicut fix episodes/ep01/clips/c01 --take t01 --frame 48 --object "the cup" --problem "the cup floats above the table" --instead "the cup rests on the table"
```

之后这个镜头显示为已改动，视频环节再运行一次。想仔细看一个版本，你的 Agent 对它运行 `minicut check zoom`。见[检查和环节](/zh-cn/docs/cli/checks-and-loops#minicut-check-zoom)。

不经过环节检查单个版本，运行 `minicut check take episodes/ep01/clips/c01`。加上 `--take t02` 就检查那个版本。

## 到版本上限就停

一个镜头默认有 3 个版本。到了上限，失败那一行写 `take cap reached (3 of 3): pick the best take of c01 and tell the user what is still wrong`。由你决定：选出最好的版本，或者提高上限。上限是 `series.json` 里的 `takes` 键，比如 `"loops": {"takes": 5}`。你也可以运行 `minicut loop run videos --max 5`。

## 选定要留的版本

1. 在 MiniCut 应用里看一个镜头的各个版本：

```bash Terminal
minicut open rain-shop --episode ep01 --tab shots
```

2. 版本通过检查而镜头还没有选定版本时，环节会把选定版本设为这个版本。选定版本是预览片图片时，它也这样做。你自己选的版本会保留。
3. 想自己选版本，运行：

```bash Terminal
minicut asset pick rain-shop ep01 c01 t02
```

4. 再运行一次 `minicut shots --episode ep01`。每个镜头都显示 `done`。

## 认可这些版本

1. 看每个镜头的选定版本。环节通过时，它会打印 `PASSED, show the user:` 和列出选定版本的命令。
2. 说好。你的 Agent 运行：

```bash Terminal
minicut loop approve videos
```

3. 想带着你接受的失败结束这个环节，运行 `minicut loop done videos --reason "Good enough, ship it"`。

## 检查是否成功

运行 `minicut loop`。视频环节显示为已通过或已完成。`next:` 一行写出下一条命令，后面跟着一行 `why:`。接着看[剪辑一集](/zh-cn/docs/cli/edit-an-episode)。

## 错误

| 信息 | 怎么做 |
|---|---|
| `Shot <shot> already has job <job> <state>.` | 用 `minicut jobs --stop <job>` 停掉这个任务，或者加 `--again` |
| `no clip.json in <folder>` | 给出一集里某个镜头文件夹的路径 |
| `take cap reached` | 选出最好的版本，或者提高上限 |
| `You are not signed in. Ask your agent to run minicut login.` | 登录。见[账号](/zh-cn/docs/cli/account) |

## 下一步

[剪辑一集](/zh-cn/docs/cli/edit-an-episode) [生成](/zh-cn/docs/cli/generate) [检查和环节](/zh-cn/docs/cli/checks-and-loops)
