0

我想将一个 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 文件,文本的重要部分是:

  1. 行号即001 002 003...
  2. 第三和第四列时间码数字即

    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 文件中的行号相对应。这是一对一的匹配,序列中没有偏移或间隙。每一行文本都应该作为一整行进入所需的最终结果,没有换行符。

最终结果基本上将字幕文本的每个编号行夹在第一个和第二个时间码数字之间。时间码数字也需要通过以下方式稍微重新格式化:

  1. 将每组括在方括号中,即[]
  2. 确保第一组数字(小时)被清零,即01:00:03:06成为00:00:03:0607:06:15:22成为00:06:15:22
  3. 最后一个冒号“ :”(在帧号之前)被转换为句点“ .”,即00:00:03:06变为00:00:03.06

差不多就是这样。字幕文本文件中可以有大约 100 到 120 行文本,相应地,EDL 文本文件中有 100 到 120 个“决定”。如果需要任何进一步的解释,请询问。我遇到的主要问题是找出如何开始这一点。虽然我可以以编程方式处理单个文件中的单行文本,但我对如何管理多个文件之间的多行感到有些困惑。

提前谢谢大家。

4

2 回答 2

2

大致上应该是这样的计划。

  • 阅读文件
  • 为每种类型的文件制作解析器
  • 将数据存储在有用的数据结构/对象中
  • 以适当的格式输出

分解每一步,直到只需要写下代码。在每一步测试。

于 2011-01-23T21:02:21.703 回答
0

这是从 1 个文件到另一个文件的 1 对 1 匹配。将每个文件解析为有用标记的列表。

一个列表将有开始和结束时间,另一个将有字幕。

(开始,结束时间):

01:00:03:06 01:00:04:19 -> 01:00:04:29 01:00:08:17 -> 01:00:10:19 01:00:15:09 -> ...

另一个文件将具有:

"If we think about climate change," -> "most of .. fuel combustion" -> "But what .. carbon cycle" -> ..

现在遍历两个文件并合并 2 个列表(1 到 1)(可能创建一个新列表)。最后将新列表写入文件。

于 2011-12-14T17:55:29.443 回答