# 剪辑器

打开、修改、检查和渲染一集剪辑稿的每条命令，以及它们的用法、选项和错误。

这些命令处理的是一集的剪辑稿，也就是这一集文件夹里的 `index.html` 文件。集文件夹是 `<project>/episodes/ep01`。你的 Agent 在剪辑环节运行它们，排在视频环节之后。

本页的每条命令都需要这台电脑已登录。没登录时，每条命令都会打印 `You are not signed in. Ask your agent to run minicut login.`，并以退出码 `10` 结束。见[账号](/zh-cn/docs/cli/account)。

除了 `minicut edit` 和 `minicut catalog`，每条命令都在这一集的文件夹里运行。你给出的路径必须在这个文件夹之内。

## minicut edit

打开某一集的 MiniCut 剪辑器，并打印它的链接。

### Usage

```bash Usage
minicut edit PROJECT [--episode EPISODE] [--port PORT]
```

替换下面的内容：

- `PROJECT`：项目 id 或项目文件夹。
- `EPISODE`：集，`ep01` 到 `ep999`。
- `PORT`：剪辑器在你电脑上监听的端口。

### 说明

剪辑器在你的电脑上运行，直到你停止它。每一集有自己的端口，所以只要这个端口空闲，每次重启链接都不变。如果别的程序占着这个端口，剪辑器会换一个空闲端口，并告诉你链接变了。如果这一集的剪辑器已经在运行，命令打印它的地址，不再启动新的。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--episode` | 字符串 | `ep01` | 要打开的集。 |
| `--port` | 数字 | 这一集自己的端口 | 启动用的端口。如果它被占用，剪辑器会换一个空闲端口并告诉你。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 示例

### 打开项目的第一集

```bash Command
minicut edit night-market
```

你会看到剪辑器的版本、一个 2 分钟内只能打开一次的链接，以及停止剪辑器的命令。

### 打开第 2 集

```bash Command
minicut edit night-market --episode ep02
```

### 输出

链接里带一个一次性的验证码。2 分钟之后想再打开剪辑器，再运行一次 `minicut edit`。按 Ctrl+C 停止剪辑器。

| 退出码 | 含义 |
|---|---|
| `0` | 剪辑器运行过并已停止，或者它本来就在运行。 |
| `2` | 项目或集还没有剪辑稿，或者没有安装剪辑器。 |
| `10` | 这台电脑没有登录。 |

### 另见

[minicut render](#minicut-render)、[项目](/zh-cn/docs/cli/projects)

## minicut render

把这个文件夹里的这一集渲染成一个视频文件，或者对它运行剪辑器的 lint、检查或台词导入。

### Usage

```bash Usage
minicut render [-o FILE] [--quality {draft|looks|delivery}]
minicut render lint [--json]
minicut render check [--json]
minicut render transcribe TRANSCRIPT
```

替换下面的内容：

- `FILE`：要写出的视频文件，是这一集文件夹之内的 `.mp4`、`.webm` 或 `.mov` 路径，例如 `renders/ep01.mp4`。
- `TRANSCRIPT`：这一集文件夹之内的一个 `.json` 台词文件。

### 说明

`minicut render` 把做好的这一集渲染成这一集文件夹里的一个视频文件。`lint` 是在你剪辑时对剪辑稿做的快速检查。`check` 先运行 lint，再打开剪辑稿检查一遍。`transcribe` 把一份台词文本放进这一集。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `-o`、`--out` | 路径 | 无 | 要写出的视频文件。 |
| `--quality` | `draft`、`looks` 或 `delivery` | `looks` | 试改动时用 `draft`，第一次真正渲染用 `looks`，最终文件用 `delivery`。 |
| `--json` | 开关 | 关 | 只用于 `lint` 和 `check`：把结果打印成 JSON。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 示例

### 渲染最终文件

```bash Command
minicut render -o renders/ep01.mp4 --quality delivery
```

你会看到渲染的进度，然后文件出现在 `renders/ep01.mp4`。

### 渲染之前检查剪辑稿

```bash Command
minicut render check
```

### 输出

`lint` 和 `check` 为每个问题打印一行。加上 `--json`，它们把结果打印成 JSON。

| 退出码 | 含义 |
|---|---|
| `0` | 渲染或检查完成了。 |
| `2` | 某个选项不对，或者这个文件夹里没有 `index.html`。 |
| `10` | 这台电脑没有登录。 |

### 另见

[minicut snapshot](#minicut-snapshot)、[检查和环节](/zh-cn/docs/cli/checks-and-loops)

## minicut timeline

打印剪辑稿，或者用一步修改它，这一步可以用 `minicut timeline undo` 撤销。

### Usage

```bash Usage
minicut timeline [--json]
minicut timeline {move|trim|split|delete|duplicate|ids|apply|undo} ...
minicut timeline set '#CLIP_ID' --text "WORDS" [--json]
minicut timeline fit [--plan] [--json]
minicut timeline fit --undo
```

替换下面的内容：

- `CLIP_ID`：字幕、标题或卡片片段的 id，例如 `cap-c05-l01`。
- `WORDS`：这个片段的新文字。

### 说明

不加子命令时，`minicut timeline` 列出每条轨道和每个片段：起点、终点和播放的内容。每次修改是一步，每一步都能撤销。运行 `minicut timeline SUBCOMMAND --help`，看某个子命令接受哪些参数。

| 子命令 | 作用 |
|---|---|
| `move`、`trim`、`split`、`delete`、`duplicate` | 对一个片段做一次编辑。 |
| `set` | 修改一条字幕、标题或卡片的文字。 |
| `ids` | 打印片段 id。 |
| `apply` | 一步应用文件里的一列编辑。 |
| `undo` | 根据撤销凭据撤销一次修改。 |
| `fit` | 把每个比版本长的镜头剪短到和版本一样长。 |

`fit` 会把被缩短的镜头后面的所有内容前移，所以剪辑稿变短，没有任何版本以静帧结尾。`clip.json` 里写着 `"fit": "freeze"` 的镜头保留它的静帧。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--text` | 字符串 | 无 | 只用于 `set`：新的文字。 |
| `--json` | 开关 | 关 | 把结果打印成 JSON。用于 `set` 时，打印撤销凭据。 |
| `--plan` | 开关 | 关 | 只用于 `fit`：打印会做的编辑，什么都不改。 |
| `--undo` | 开关 | 关 | 只用于 `fit`：撤销上一次 fit。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 示例

### 列出剪辑稿里的片段

```bash Command
minicut timeline
```

你会看到剪辑稿里的每条轨道和每个片段，带着起点和终点。

### 修改一条字幕的文字

```bash Command
minicut timeline set '#cap-c05-l01' --text "I never left." --json
```

### 预览 fit 的结果而不改剪辑稿

```bash Command
minicut timeline fit --plan
```

### 输出

| 退出码 | 含义 |
|---|---|
| `0` | 剪辑稿已打印或已修改。 |
| `2` | 某个子命令或选项不对，或者这个文件夹里没有 `index.html`。 |
| `10` | 这台电脑没有登录。 |

### 另见

[minicut captions](#minicut-captions)、[minicut render](#minicut-render)

## minicut captions

把这一集的每条字幕按同一个标准重做一遍。

### Usage

```bash Usage
minicut captions [EPISODE_FOLDER] [--top LINE_IDS] [--bottom LINE_IDS] [--json]
```

替换下面的内容：

- `EPISODE_FOLDER`：这一集的文件夹。不给就用当前文件夹。
- `LINE_IDS`：一个或多个台词 id，用逗号隔开，例如 `c05-l01`。

### 说明

每条字幕放在画面底部居中、标题安全区之内，最多 2 行，在自然的断句处分行，并和它那句台词的音频对上时间。文字保持不变。你用 `minicut timeline set` 改了文字之后，再运行一次。预览片环节和剪辑环节用 `minicut check captions` 检查字幕。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--top` | 台词 id | 无 | 把这些台词放到画面顶部，用于底部已经有文字的镜头。 |
| `--bottom` | 台词 id | 无 | 把这些台词放回画面底部。 |
| `--json` | 开关 | 关 | 把结果打印成 JSON。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 示例

### 重做第 1 集的每条字幕

```bash Command
minicut captions episodes/ep01
```

### 把一句台词移到画面顶部

```bash Command
minicut captions episodes/ep01 --top c05-l01
```

你会看到它改了哪些字幕，然后是每条字幕现在是否符合标准。

### 输出

| 退出码 | 含义 |
|---|---|
| `0` | 每条字幕都符合标准。 |
| `1` | 字幕重做过了，但有些仍然不符合标准。每一条都会点名。 |
| `2` | 文件夹里没有 `index.html`，或者缺 Python 3。 |
| `10` | 这台电脑没有登录。 |

### 另见

[检查和环节](/zh-cn/docs/cli/checks-and-loops)、[minicut timeline](#minicut-timeline)

## minicut snapshot

不渲染，直接把这个文件夹里这一集的静帧图片存下来。

### Usage

```bash Usage
minicut snapshot [--frames COUNT | --at SECONDS] [-o FOLDER]
```

替换下面的内容：

- `COUNT`：在整集里截多少张静帧。
- `SECONDS`：截静帧的时间点，用逗号隔开，例如 `1.5,3`。
- `FOLDER`：存静帧的文件夹，在这一集的文件夹之内。

### 说明

快照是查看剪辑稿最快的办法。它需要 `minicut setup` 装好的浏览器。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--frames` | 数字 | 无 | 截这么多张静帧，平均分布在整集里。 |
| `--at` | 秒 | 无 | 在每个这样的时间点截一张静帧。 |
| `-o`、`--output` | 路径 | 无 | 存静帧的文件夹。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 示例

### 在三个时间点截静帧

```bash Command
minicut snapshot --at 1,3,5 -o snapshots
```

你会看到它存下的每张静帧的路径。

### 另见

[minicut keyframes](#minicut-keyframes)、[minicut compare](#minicut-compare)

## minicut keyframes

把这一集里每个动画的运动过程存成图片。

### Usage

```bash Usage
minicut keyframes [TARGET] [--selector SELECTOR]
```

替换下面的内容：

- `TARGET`：这一集文件夹之内要查看的文件。不给就查看整集。
- `SELECTOR`：一个 CSS 选择器。只显示和它匹配的元素。

### 说明

用它检查标题、名牌或特效的运动是不是你想要的样子。它需要 `minicut setup` 装好的浏览器。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--selector` | 字符串 | 无 | 只显示和这个 CSS 选择器匹配的元素。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 示例

### 检查这一集的每个动画

```bash Command
minicut keyframes
```

### 另见

[minicut snapshot](#minicut-snapshot)

## minicut compare

把几个版本并排放进一张图片。

### Usage

```bash Usage
minicut compare FOLDER [--out FILE]
```

替换下面的内容：

- `FOLDER`：这一集文件夹之内的一个文件夹，里面放着要比较的版本。
- `FILE`：要写出的图片，在这一集的文件夹之内。

### 说明

用它在一个镜头或一张静帧的几个版本之间做选择。它需要 `minicut setup` 装好的浏览器。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--out` | 路径 | 无 | 要写出的图片。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 示例

### 比较一个文件夹里的静帧

```bash Command
minicut compare snapshots --out compare.png
```

### 另见

[minicut grade-compare](#minicut-grade-compare)、[minicut snapshot](#minicut-snapshot)

## minicut grade-compare

把同一个片段的几种调色风格并排放进一张图片。

### Usage

```bash Usage
minicut grade-compare --for CLIP [--grades LOOKS]
```

替换下面的内容：

- `CLIP`：用来展示这些调色风格的片段。
- `LOOKS`：要比较的调色风格，用逗号隔开。

### 说明

用它在最终渲染之前，为这一集选定调色风格。它需要 `minicut setup` 装好的浏览器。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--for` | 路径 | 无 | 用来展示这些调色风格的片段。 |
| `--grades` | 列表 | 无 | 要比较的调色风格。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 另见

[minicut compare](#minicut-compare)

## minicut catalog

列出剪辑器自带的现成标题、名牌、转场和特效。

### Usage

```bash Usage
minicut catalog [WORDS] [--type {block|component}] [--json]
```

替换下面的内容：

- `WORDS`：你想要什么，用英文写，例如 `reveal a headline one line at a time`。

### 说明

搜索在你的电脑上运行。自己动手做标题或特效之前，先搜一下，再用 `minicut add` 加入你选的那一个。`minicut catalog` 在任何文件夹里都能用。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--type` | `block` 或 `component` | 两种都列 | 只列出一种元件。 |
| `--json` | 开关 | 关 | 把结果打印成 JSON。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 示例

### 搜一个标题

```bash Command
minicut catalog "reveal a headline one line at a time" --json
```

你会看到匹配的元件，最匹配的在前，每个都带着它的名字。

### 另见

[minicut add](#minicut-add)

## minicut add

把一个现成的元件放进这个文件夹里的这一集。

### Usage

```bash Usage
minicut add NAME [--force]
```

替换下面的内容：

- `NAME`：元件的名字，和 `minicut catalog` 列出的一样。

### 说明

元件的文件会放进这一集的文件夹。然后你把它放进剪辑稿里。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--force` | 开关 | 关 | 见 `minicut add --help`。 |

全局选项：见[全局选项](/zh-cn/docs/cli/global-options)。

### 示例

### 加一个胶片颗粒特效

```bash Command
minicut add grain-overlay
```

### 另见

[minicut catalog](#minicut-catalog)

## 错误

| 信息 | 怎么做 |
|---|---|
| `You are not signed in. Ask your agent to run minicut login.` | 运行 `minicut login`，再运行一次命令。 |
| `This folder has no index.html.` | 在这一集的文件夹里运行命令，例如 `episodes/ep01`。 |
| `no episode timeline at ...` | 这一集还没有剪辑稿。运行 `minicut new PROJECT --timeline ep01`。 |
| `The MiniCut editor is not installed: ...` | 照信息里的步骤做：运行 `minicut setup`，或者再运行一次安装那一行。 |
| `The browser for pictures is not installed. Run: minicut setup` | 运行 `minicut setup`。 |
| `... is not inside this episode folder.` | 给一个在这一集文件夹之内的路径。 |
| `-o takes a .mp4, .webm or .mov path inside this episode folder.` | 给 `-o` 一个在这一集文件夹之内的视频文件名。 |
| `--quality is draft, looks or delivery.` | 用这三个值之一。 |
| `--top takes caption line ids, comma separated, like c05-l01` | 给台词 id，例如 `c05-l01,c06-l02`。 |
| `no Python 3 found. Run: minicut setup` | 运行 `minicut setup`。 |

## 下一步

[场景和音乐](/zh-cn/docs/cli/scene-and-music) [检查和环节](/zh-cn/docs/cli/checks-and-loops) [全局选项](/zh-cn/docs/cli/global-options)
