要在 Final Cut Pro 中合并连续的字幕文件,请将每个片段的字幕时间调整到其在最终剪辑中的位置,然后导入合并后的单个 SRT 文件。对每个字幕的开始和结束时间应用相同的偏移量,可以保留字幕时长和间隔。

此工作流程适用于在 Mac 上剪辑软件演示视频的编辑者:他们需要组装连续的片段,每个片段都有一份从片段开头开始计时的现成 SRT 文件。目标是得到一组字幕序列,其中每条字幕都保留独立的时间设置。Apple 说明了如何通过其闭合字幕工作流程将 SRT 直接导入 Mac 版 Final Cut Pro。将闭合字幕导入 Mac 版 Final Cut Pro。

Final Cut Pro 的字幕导入实际上会做什么?

Apple 的导入器提供两种时间选项。Relative to Timeline 会将项目的开始时间加到字幕时间戳上。Absolute 则使用时间戳,不受项目开始时间影响。文档所述的这两种选项都不支持为每个后续源片段单独设置偏移量。因此,将播放头移到片段 B,并不是一种有文档依据的方法,无法让 B 的从零开始计时的 SRT 从该处开始。Apple 的字幕导入说明。

还有一个名为 Join Captions 的命令,但它会将选中的相邻字幕片段替换为一条包含合并文本的字幕。这会改变字幕条目的结构。对于需要让各条字幕分别按时间显示的连续文件,应保留字幕条目各自独立,并合并带有时间戳的记录。在 Mac 版 Final Cut Pro 中调整和排列闭合字幕。

这里采用的受支持方法是在 Final Cut Pro 外部准备好偏移量正确的 SRT,通过 Apple 的字幕导入器导入,检查结果,并在需要时导出单个字幕文件。此流程不需要字幕生成器功能或插件。

更改字幕前先确定偏移量

首先确定每个片段在最终项目中的起始位置,以从项目开头开始计算的经过时间为准。记录实际剪辑位置,包括片头卡、空白间隔或缩短的片段。请在字幕文件的副本上操作。

检查这些文件是否已经使用统一的时间基准。如果片段 B 在剪辑中从第 12 秒开始,而它的第一条字幕时间已经约为 14 秒,那么它可能已经采用相对于项目的时间。再加上 12 秒会导致偏移两次。如果它的第一条字幕时间约为两秒,请检查对应媒体,确认该文件确实是从 B 的开头开始计时。

合并前,可参考以下判断表:

源文件的计时方式和剪辑情况 所需处理
每个 SRT 都从各自片段的开头开始计时 将该片段在项目中的经过起始时间加到所有字幕时间戳上
每个 SRT 都已采用最终项目的经过时间基准 合并记录,不添加片段偏移量
源时间戳使用了不同的时间原点 减去该时间原点,再加上目标片段的起始时间
片段内部有剪切或变速 合并前将受影响的字幕重新映射到剪辑后的媒体时间

对于未改动的片段,计算方式为 new time = source time + segment start − source origin。对每条字幕的开始和结束时间分别应用此计算。由于 (end + offset) − (start + offset) 等于 end − start,恒定偏移量不会改变时长,也会保留该片段内部字幕之间的间隔。

恒定偏移量无法修正内部删减或变速。如果 B 在中途被删掉了几秒,那么剪切之后的字幕需要进行不同的调整。在将整份文件作为一个时间块处理之前,请确认每个 SRT 都与剪辑中实际使用的片段相匹配。

用两个片段的时间示例说明操作过程

以下输入仅为示例。片段 A 占据软件演示视频的前 12 秒。片段 B 紧随其后,从第 12 秒开始。两个源 SRT 都从零开始按各自的经过时间计时,且两个片段都没有被修剪或重新定时。

文件 片段在最终剪辑中的起始时间 本地字幕时间区间 所需偏移量
part-a.srt 0 秒 1–3 秒;6–8 秒 0 秒
part-b.srt 12 秒 2–4 秒;7–9 秒 +12 秒

A 中最后一条字幕在第 8 秒结束,但 A 的媒体会持续到第 12 秒。如果用最后一条字幕的结束时间作为 B 的偏移量,B 会提前 4 秒。片段的位置必须依据媒体剪辑来确定,包括没有字幕的部分。

一条 SRT 记录由字幕编号、开始和结束时间戳、字幕文本以及空白分隔行组成。时间戳采用时、分、秒和毫秒格式,例如 00:00:02,000;时间分隔符为 -->。美国国会图书馆介绍了这种结构,并指出 SRT 是纯文本格式。SubRip 字幕格式(SRT)。

以下是示例 part-a.srt 的完整内容:

1
00:00:01,000 --> 00:00:03,000
Open the sample project.

2
00:00:06,000 --> 00:00:08,000
Select the blue rectangle.

以下是调整前示例 part-b.srt 的完整内容:

1
00:00:02,000 --> 00:00:04,000
Open the color controls.

2
00:00:07,000 --> 00:00:09,000
Choose the green swatch.

将 B 中每条字幕的两个时间戳都加上 12 秒,把这些记录追加到 A 之后,并重新编号整组序列。最终 combined-demo.srt 的完整内容如下:

1
00:00:01,000 --> 00:00:03,000
Open the sample project.

2
00:00:06,000 --> 00:00:08,000
Select the blue rectangle.

3
00:00:14,000 --> 00:00:16,000
Open the color controls.

4
00:00:19,000 --> 00:00:21,000
Choose the green swatch.

四条字幕的时长仍都是两秒。B 中字幕之间的三秒间隔仍为三秒。A 的最后一条字幕在第 8 秒结束,B 的第一条字幕在第 14 秒开始,两者之间的六秒间隔也是有意保留的:A 结尾有四秒没有字幕,B 开头有两秒没有字幕。时间戳计算使用一个简单的确定性 Python 程序进行核对;这个示例未在 Final Cut Pro 中运行。

在 Mac 上准备合并后的 SRT

对于较短的文件,可使用纯文本编辑器调整时间戳并组装记录。在 TextEdit 中创建文稿,并在保存前选择 Format > Make Plain Text。Apple 说明新文稿默认采用富文本格式,转换为纯文本会移除文稿格式。在 Mac 上使用 TextEdit 创建、打开和转换文稿。

将最终文本保存为文件名 combined-demo.srt。检查实际扩展名:结尾不能是 .srt.txt 或 .rtf。在字幕条目之间保留空行,保留每条字幕的文本和换行,并为最终记录连续编号。上面的示例使用不带样式标签的纯字幕文本。

对于较大的文件,可使用能够整体偏移所有选定字幕的字幕编辑器进行相同计算。确认该操作同时修改开始和结束时间。然后,在合并文件之前,对照偏移量记录表检查调整后第一条和最后一条字幕。用于调整时长或拉伸时间的命令,与添加一个恒定偏移量的作用不同。

不要只把原始文件粘贴在一起再重新编号。编号只用于确定顺序;它不会让字幕在视频中延后出现。两个时间戳都接近零的文件,拼接后仍然会包含接近零的时间戳。

将合并后的文件导入 Final Cut Pro

打开最终项目,并按照 Apple 记录的导入路径操作:

  1. 选择 File > Import > Closed Captions。
  2. 选择 combined-demo.srt。
  3. 在 Import as Role 下,选择 SRT 字幕角色和适当的语言子角色。
  4. 在 Insertion Time 下,选择 Relative to Timeline,因为本示例使用从项目开头开始计算的经过时间。
  5. 点击 Import。

字幕会出现在时间线上方的字幕轨道中。对于起始时间为 01:00:00:00 的项目,示例中经过 14 秒的字幕应出现在大约 01:00:14:00 处。只有当提供的时间戳已经表示预期的时间线时钟时,才使用 Absolute。这些时间选项依据Apple 的导入文档。

请区分毫秒时间戳和基于帧的时间码。在示例 SRT 中,00:00:14,000 表示恰好 14 秒。为了让计算清楚无误,示例使用整秒边界;导入后,请根据实际项目检查更精细的时间设置。

检查片段边界并排查时间错误

使用 Shift-Command-2 打开时间线索引。在 Roles 中启用字幕显示,并选择目标语言子角色。在 Captions 面板中,选择一条字幕会将播放头移到其起始位置;View Errors 会将列表筛选为包含错误的字幕。查看器和时间线中的字幕显示可以分别控制。在 Mac 版 Final Cut Pro 中显示或隐藏闭合字幕。

对于示例,请确认有四条独立字幕。检查 A 中第一条和最后一条字幕、片段边界附近的空白区间,以及 B 中的两条字幕。对于实际项目,请对每个导入片段重复检查边界,然后播放完整序列。

症状 首先检查的内容
所有字幕都出现相同的时间偏移 项目开始时间和导入时间选项
只有一个片段整体出现相同的时间偏移 该片段的偏移量或源时间原点
内部剪辑之后时间发生变化 媒体中的修剪、删除、插入或变速
后续文件中的字幕都出现在开头附近 本地时间戳未加偏移就被追加了
查看器中没有字幕 字幕显示状态和当前语言子角色

如果字幕重叠,请先检查偏移量计算,再修改其时长。Apple 说明同一语言子角色中的字幕重叠通常会产生错误,而 Resolve Overlaps 会修剪片段。Apple 还指出,将字幕拖到相邻字幕上可能会覆盖它们。这两种操作都无法保留所有原始时间边界,因此只有在确定确实需要改变底层时间设置后才使用。Apple 的字幕排列指南。

为最终剪辑导出一个字幕文件

选择 File > Export Closed Captions,为输出命名,并在 Roles 下选择目标语言子角色。Final Cut Pro 会为每个选定的语言子角色创建一个单独文件。对于从最终视频开头开始计时的 SRT,请选择 Relative to Timeline;这会减去项目开始时间。Absolute 则保留时间线时钟。在 Mac 版 Final Cut Pro 中导出闭合字幕。

对于这些没有样式的演示字幕,请取消选择 Include Formatting。Apple 通常建议移除 SRT 格式,因为样式在目标播放器中的呈现方式可能不同。重新打开导出的文件,确认字幕条目数量、文本和片段边界时间戳与已检查的项目一致。Apple 的 SRT 导出指南。

最终结果应将每条字幕保留为独立的定时记录。根据每个片段在剪辑中的实际位置确定偏移量,保留没有字幕的间隔,并在导入后检查边界。这样就能得到一组与组装后的视频时间一致的合并字幕序列。

来源