2011-01-23 3 views
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. Номер строки т.е. 001002003 ...
  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:06 и 07:06:15:22 становится 00:06:15:22
  3. Последнее двоеточие «:» (до номера кадра) преобразуется в период «.» т.е. 00:00:03:06 становится 00:00:03.06

И это в значительной степени. В текстовом файле субтитров может быть от 100 до 120 строк текста и соответственно 100-120 «решений» в текстовом файле EDL. Если требуется какое-либо дальнейшее объяснение, просто спросите. Основная проблема, с которой я сталкиваюсь, - это выяснить, как начать с этого. Хотя я могу обернуть голову, манипулируя одной строкой текста в одном файле программным образом, я немного смущен тем, как управлять множеством строк между несколькими файлами.

Заранее благодарен всем.

+0

https://pypi.python.org/pypi/edl – d3vid

ответ

2

Грубо говоря, это должен быть план.

  • Прочитайте файлы
  • Сделать парсер для каждого типа файлов
  • Хранить данные в структурах полезные данные/объекты
  • Выход в соответствующем формате

Перерыв каждый шаг до тех пор, это просто вопрос написания кода. Испытание на каждом шаге.

+0

Благодарим вас за навигацию. Я думаю, что сам процесс формирования моего вопроса здесь немного помог. Тем не менее, некоторые примеры были бы полезны для того, чтобы получить представление о хорошем методе нападения на это. Хотя сам вопрос весьма специфичен, я думаю, что общие концепции, которые будут использоваться для решения этого вопроса, могут пригодиться многим. – durandal

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) (возможно, создавая новый список). В конце напишите новый список в файл.

Смежные вопросы