Парсинг и преобразование TED talks подзаголовки JSON

Этот вопрос связан с этим другим вопросом SuperUser.

Я хочу загрузить TED talks и соответствующие подзаголовки для офлайнового просмотра, например, позволяет, берут этот короткий разговор Richard St John, видео URL загрузки с высоким разрешением следующий:

http://www.ted.com/talks/download/video/5118/talk/70

И закодированные английские подзаголовки соответствующего JSON могут быть загружены в:

http://www.ted.com/talks/subtitles/id/70/lang/eng

Вот кроме с начала фактического подзаголовка:

{"captions":[{"content":"This is really a two hour presentation I give to high school students,","startTime":0,"duration":3000,"startOfParagraph":false},{"content":"cut down to three minutes.","startTime":3000,"duration":1000,"startOfParagraph":false},{"content":"And it all started one day on a plane, on my way to TED,","startTime":4000,"duration":3000,"startOfParagraph":false},{"content":"seven years ago."

И от конца подзаголовка:

{"content":"Or failing that, do the eight things -- and trust me,","startTime":177000,"duration":3000,"startOfParagraph":false},{"content":"these are the big eight things that lead to success.","startTime":180000,"duration":4000,"startOfParagraph":false},{"content":"Thank you TED-sters for all your interviews!","startTime":184000,"duration":2000,"startOfParagraph":false}]}

Я хочу записать приложение, которое автоматически загружает версию с высоким разрешением видео и всех доступных подзаголовков, но мне приходится действительно нелегко, так как я должен преобразовать подзаголовок в (VLC или любой другой достойный видеоплеер) совместимый формат (.srt, или .sub являются моими предпочтительными вариантами), и я понятия не имею что startTime и duration ключи файла JSON представляют.

Что я знаю, до сих пор это:

  • Загруженное видео длится в течение 3 минут и 30 секунд, и имеет 29 кадр/с = 6 090 кадров.
  • startTime запускается в 0 с a duration из 3 000 = 3000
  • startTime концы в 184 000 с a duration из 2000 = 186000

Это может также стоить замечающий следующий отрывок JavaScript:

introDuration:16500,
adDuration:4000,
postAdDuration:2000,

Таким образом, мой вопрос, что логика должна я применять для преобразования startTime и duration значения к .srt совместимому формату:

1
00:01:30,200 --> 00:01:32,201
MEGA DENG COOPER MINE, INDIA

2
00:01:37,764 --> 00:01:39,039
Watch out, watch out!

Или к .sub совместимому формату:

{FRAME_FROM}{FRAME_TO}This is really a two hour presentation I give to high school students,
{FRAME_FROM}{FRAME_TO}cut down to three minutes.

Кто-либо может выручить меня с этим?


Ninh Bui закрепил его, формула следующая:

introDuration - adDuration + startTime ... introDuration - adDuration + startTime + duration

Этот подход позволяет мне, преобразовывают непосредственно в .srt формат (никакая потребность знать длину и кадр/с) двумя способами:

00:00:12,500 --> 00:00:15,500
This is really a two hour presentation I give to high school students,

00:00:15,500 --> 00:00:16,500
cut down to three minutes.

И:

00:00:00,16500 --> 00:00:00,19500
And it all started one day on a plane, on my way to TED,

00:00:00,19500 --> 00:00:00,20500
seven years ago.

11
задан Community 20 March 2017 в 10:04
поделиться

2 ответа

Я предполагаю, что время в json выражается в миллисекундах, например 1000 = 1 секунда. Вероятно, существует мэйнтаймер, где startTime указывает время на шкале времени, в которое должны появиться субтитры, а продолжительность, вероятно, - это количество времени, в течение которого субтитры должны оставаться в поле зрения. Эта теория дополнительно подтверждается делением 186000/1000 = 186 секунд = 186/60 = 3,1 минуты = 3 минуты и 6 секунд. Оставшиеся секунды, вероятно, аплодисменты ;-) Имея эту информацию, вы также сможете рассчитать, из какого кадра в какой кадр следует применить преобразование, т.е. вы уже знаете, сколько кадров в секунду, поэтому все, что вам нужно сделать, это умножить количество секунд времени начала с FPS, чтобы получить начальный кадр. Конечный кадр можно получить следующим образом: (startTime + duration) * fps: -)

4
ответ дан 3 December 2019 в 10:44
поделиться

Я сделал простую консольную программу для загрузки субтитров. Я подумывал о том, чтобы сделать её доступной через интернет, используя какую-нибудь систему скриптов, как у жирной обезьяны... Вот ссылка на мой блог-пост с кодом..: http://estebanordano.com.ar/ted-talks-download-subtitles/

3
ответ дан 3 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: