EDL(編集決定リスト)テキストファイルを、字幕を含む別のテキストファイルとマージしたいと思います。EDLはビデオ編集プログラムのFinalCutProから生成されますが、テキストファイルは通常のテキストです。この特定の要求は特定の最終用途に対するものですが、この種の処理を行うために従うことができる一般的な方法を学びたいと思います。私は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
字幕テキストファイルの4つの「コンパニオン」行の例を次に示します。
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
..。 タイムコード番号の3列目と4列目
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対1の一致です。テキストの各行は、改行なしで1行全体として目的の最終結果に入る必要があります。
最終結果は、基本的に、字幕テキストの番号が付けられた各行を1番目と2番目のタイムコード番号の間に挟みます。タイムコード番号も、次のように少し再フォーマットする必要があります。
- 各セットを角かっこで囲みます。
[]
- 数値の最初のセット(時間)がゼロになっていることを確認し
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行の「決定」があります。さらに説明が必要な場合は、お問い合わせください。私が抱えている主な問題は、これから始める方法を見つけることです。プログラムで1つのファイル内の1行のテキストを操作することに頭を悩ませることはできますが、複数のファイル間の多くの行を管理する方法については少し混乱しています。
よろしくお願いします。