我想将一个 EDL(编辑决策列表)文本文件与另一个包含字幕的文本文件合并。EDL 由视频编辑程序 Final Cut Pro 生成,而文本文件只是普通文本。虽然此特定请求是针对特定最终用途的,但我想了解进行此类处理时可以遵循的一般方法。我熟悉 Python,但对其他语言的示例非常满意,只要它们在 UNIX/Mac 工作站上清晰且易于使用即可。
以下是 EDL 文件前几行的示例:
TITLE: SAMPLE EDL
FCM: NON-DROP FRAME
001 GEN V C 00:01:03:16 00:01:04:29 01:00:03:06 01:00:04:19
* FROM CLIP NAME: TITLE 3D
* COMMENT:
* FROM CLIP IS A GENERATOR
002 GEN V C 00:01:04:15 00:01:08:03 01:00:04:29 01:00:08:17
* FROM CLIP NAME: TITLE 3D
* COMMENT:
* FROM CLIP IS A GENERATOR
003 GEN V C 00:01:04:15 00:01:09:05 01:00:10:19 01:00:15:09
* FROM CLIP NAME: TITLE 3D
* COMMENT:
* FROM CLIP IS A GENERATOR
004 GEN V C 00:01:04:15 00:01:07:03 01:00:17:17 01:00:20:05
* FROM CLIP NAME: TITLE 3D
* COMMENT:
* FROM CLIP IS A GENERATOR
以下是字幕文本文件中四个“伴随”行的示例:
001
If we think about climate change,
002
most of society's focused on fossil fuel combustion.
003
But what humans release on an annual basis is just one part of the carbon cycle.
004
Carbon dioxide concentrations also go up and down
最后,这是一个期望的最终结果的示例:
[00:00:03.06]
If we think about climate change,
[00:00:04.19]
[00:00:04.29]
most of society's focused on fossil fuel combustion.
[00:00:08.17]
[00:00:10.19]
But what humans release on an annual basis is just one part of the carbon cycle.
[00:00:15.09]
[00:00:17.17]
Carbon dioxide concentrations also go up and down
[00:00:20.05]
查看示例 EDL 文件,文本的重要部分是:
- 行号即
001
002
003
... 第三和第四列时间码数字即
01:00:03:06 01:00:04:19 01:00:04:29 01:00:08:17 01:00:10:19 01:00:15:09
从字幕文本文件中,行号与 EDL 文件中的行号相对应。这是一对一的匹配,序列中没有偏移或间隙。每一行文本都应该作为一整行进入所需的最终结果,没有换行符。
最终结果基本上将字幕文本的每个编号行夹在第一个和第二个时间码数字之间。时间码数字也需要通过以下方式稍微重新格式化:
- 将每组括在方括号中,即
[]
- 确保第一组数字(小时)被清零,即
01:00:03:06
成为00:00:03:06
和07:06:15:22
成为00:06:15:22
- 最后一个冒号“
:
”(在帧号之前)被转换为句点“.
”,即00:00:03:06
变为00:00:03.06
差不多就是这样。字幕文本文件中可以有大约 100 到 120 行文本,相应地,EDL 文本文件中有 100 到 120 个“决定”。如果需要任何进一步的解释,请询问。我遇到的主要问题是找出如何开始这一点。虽然我可以以编程方式处理单个文件中的单行文本,但我对如何管理多个文件之间的多行感到有些困惑。
提前谢谢大家。