sub-cli/docs/zh-Hans/commands.md

243 lines
7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 命令参考
description: 所有Sub-CLI命令的详细文档
---
# 命令参考
本页面提供了所有可用Sub-CLI命令的详细文档、选项和用法。
## 全局选项
这些选项在所有Sub-CLI命令中都可用
```
help 显示命令的帮助信息
```
## convert
`convert` 命令将字幕文件在不同格式之间转换,尽可能保留信息,同时适应目标格式的功能。
### 用法
```
sub-cli convert <源文件> <目标文件>
```
### 参数
| 参数 | 描述 |
|----------|-------------|
| `<源文件>` | 源字幕文件的路径 |
| `<目标文件>` | 要创建的目标字幕文件的路径 |
### 支持的格式转换
| 源格式 | 目标格式 | 注意 |
|---------------|---------------|-------|
| SRT (.srt) | SRT, VTT, LRC, TXT | - |
| VTT (.vtt) | SRT, VTT, LRC, TXT | - |
| LRC (.lrc) | SRT, VTT, LRC, TXT | - |
| TXT (.txt) | — | TXT只能作为目标格式不能作为源格式 |
### 功能保留
转换过程旨在尽可能保留更多功能,但某些特定于格式的功能可能会丢失或适应:
#### SRT功能
- **保留**: 文本内容、时间线(开始和结束时间)、基本样式(粗体、斜体、下划线)
- **在某些格式中丢失**: 转换为LRC或TXT等格式时的HTML样式标签
#### VTT功能
- **保留**: 文本内容、时间线、标题、CSS样式当目标格式支持时
- **在某些格式中丢失**: 转换为SRT或LRC时的定位、对齐和高级样式
#### LRC功能
- **保留**: 文本内容、时间线、元数据(标题、艺术家、专辑)
- **结构限制**: LRC只支持开始时间戳没有结束时间戳不像SRT和VTT
- **从LRC转换时的适应**: 当转换为SRT/VTT时LRC中每行的单一时间戳会转换为开始+结束时间对。结束时间的计算方式为:
- 使用下一个条目的开始时间作为当前条目的结束时间
- 对于最后一个条目添加默认时长通常3-5秒来创建结束时间
- **转换为LRC时丢失**: 当其他格式转换为LRC时任何结束时间戳信息都会被丢弃
#### TXT功能
- **仅输出**: 纯文本格式只包含没有任何时间或样式的文本内容
### 技术细节
转换器使用中间表示法,尽可能保留特定格式的数据。转换分两步进行:
1. 将源格式转换为中间表示
2. 将中间表示转换为目标格式
这种方法最大限度地减少信息丢失,确保尽可能准确的转换。
### 示例
```bash
# 从SRT转换为WebVTT
sub-cli convert subtitles.srt subtitles.vtt
# 从LRC转换为纯文本去除时间信息
sub-cli convert lyrics.lrc transcript.txt
# 从WebVTT转换为SRT
sub-cli convert subtitles.vtt subtitles.srt
```
## sync
`sync` 命令将源字幕文件的时间/时间戳应用到目标字幕文件,同时保留目标文件的内容。
### 用法
```
sub-cli sync <源文件> <目标文件>
```
### 参数
| 参数 | 描述 |
|----------|-------------|
| `<源文件>` | 带有参考时间线的源字幕文件的路径 |
| `<目标文件>` | 要同步的目标字幕文件的路径 |
### 支持的格式
目前,同步仅适用于相同格式的文件之间:
- SRT到SRT
- LRC到LRC
- VTT到VTT
### 行为详情
#### 对于LRC文件
- **当条目数匹配时**: 源时间线直接应用于目标内容。
- **当条目数不同时**: 源时间线使用线性插值进行缩放以匹配目标内容。
- **从目标保留**: 所有内容文本和元数据(艺术家、标题等)。
- **在目标中修改**: 只更新时间戳。
#### 对于SRT文件
- **当条目数匹配时**: 源的开始和结束时间直接应用于目标条目。
- **当条目数不同时**: 使用缩放方法:
- 开始时间取自按比例匹配的源条目
- 结束时间根据源条目时长计算
- 保持条目之间的时间关系
- **从目标保留**: 所有字幕文本内容。
- **在目标中修改**: 更新时间戳并标准化条目编号从1开始顺序编号
#### 对于VTT文件
- **当条目数匹配时**: 源的开始和结束时间直接应用于目标条目。
- **当条目数不同时**: 使用缩放方法:
- 开始时间取自按比例匹配的源条目
- 结束时间根据源条目时长计算
- 保持条目之间的时间关系
- **从目标保留**: 所有字幕文本内容和样式信息。
- **在目标中修改**: 更新时间戳并标准化提示标识符。
### 边缘情况
- 如果源文件没有时间信息,目标保持不变。
- 如果源时长计算导致负值会应用默认的3秒时长。
- 当条目数不同时,命令会显示警告但会继续进行缩放同步。
- 目标文件中的特定格式功能(如样式、对齐方式、元数据)会被保留。同步操作只替换时间戳,不会更改任何其他格式或内容功能。
### 示例
```bash
# 使用另一个SRT文件作为参考来同步SRT文件
sub-cli sync reference.srt target.srt
# 使用另一个LRC文件作为参考来同步LRC文件
sub-cli sync reference.lrc target.lrc
# 使用另一个VTT文件作为参考来同步VTT文件
sub-cli sync reference.vtt target.vtt
```
## fmt
`fmt` 命令根据其特定格式的约定标准化和格式化字幕文件。
### 用法
```
sub-cli fmt <文件>
```
### 参数
| 参数 | 描述 |
|----------|-------------|
| `<文件>` | 要格式化的字幕文件的路径 |
### 支持的格式
| 格式 | 扩展名 | 格式化操作 |
|--------|-----------|-------------------|
| SRT | `.srt` | 标准化条目编号从1开始顺序<br>格式化时间戳为`00:00:00,000`格式<br>确保条目之间适当的间距 |
| LRC | `.lrc` | 组织元数据标签<br>标准化时间戳格式`[mm:ss.xx]`<br>确保正确的内容对齐 |
| VTT | `.vtt` | 验证WEBVTT头<br>标准化提示标识符<br>格式化时间戳为`00:00:00.000`格式<br>组织样式信息 |
### 格式特定详情
#### SRT格式化
格式化器解析SRT文件提取所有条目确保从1开始的顺序编号并以一致的格式将文件写回。这保留了所有内容和时间信息同时标准化结构。
#### LRC格式化
对于LRC文件格式化器保留所有元数据和内容但标准化时间戳的格式并确保正确对齐。这使文件更易于阅读并与不同的LRC解析器更兼容。
#### VTT格式化
格式化WebVTT文件时命令确保适当的头格式、顺序提示标识符和标准时间戳格式。所有VTT特定功能如样式、定位和注释都被保留。
### 示例
```bash
# 格式化SRT文件
sub-cli fmt subtitles.srt
# 格式化LRC文件
sub-cli fmt lyrics.lrc
# 格式化VTT文件
sub-cli fmt subtitles.vtt
```
## version
显示Sub-CLI的当前版本。
### 用法
```
sub-cli version
```
## help
显示一般帮助信息或特定命令的帮助。
### 用法
```
sub-cli help [命令]
```
### 参数
| 参数 | 描述 |
|----------|-------------|
| `[命令]` | (可选)要获取帮助的特定命令 |
### 示例
```bash
# 显示一般帮助
sub-cli help
# 显示convert命令的帮助
sub-cli help convert
```