Найти пересекающиеся субтитры
Или вставьте текст субтитров
Параметры
В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.
Пересечение — это два субтитра, которые делят экран: следующий начинается раньше, чем закончился предыдущий. Эта страница находит такие пары, показывает, сколько миллисекунд они проводят на экране одновременно, и отдаёт результат отчётом — в PDF для чтения или в CSV для таблицы, — а сам файл при этом не меняется. Само по себе пересечение не всегда ошибка: так бывает при намеренном наложении реплик, при ручной правке тайминга или после конвертации из другого формата, — но плеер не умеет рисовать два субтитра в одном месте одновременно и решает за вас.
Смотреть стоит на общие миллисекунды: 400 мс читаются как мигание, а несколько секунд обычно означают, что реплику вставили не туда. Отчёт говорит и о том, чего проверить не удалось: формат без времени окончания измерить нельзя вовсе, а реплика, у которой конец не позже начала, исправляется при чтении, и эта правка стоит в шапке отчёта — «проверено, ничего не найдено» и «проверить невозможно» остаются двумя разными фразами.
Примеры
Две реплики на одной секунде
Субтитры
1
00:00:01,000 --> 00:00:04,000
First line.
2
00:00:03,000 --> 00:00:06,000
Second line, starting early.
Что находит отчёт
Overlapping cues — 1 found
Severity Cues Start End Measured
Error 1, 2 00:00:03.000 00:00:04.000 1000 ms
Вторая реплика начинается, пока первая ещё на экране. Измеренное значение — общий отрезок, то есть конец первой реплики минус начало второй, а не длина какой-либо из них.
Соприкасающиеся реплики не пересекаются
Субтитры
1
00:00:01,000 --> 00:00:02,000
First line.
2
00:00:02,000 --> 00:00:03,000
Second line, touching.
Что находит отчёт
Overlapping cues — Nothing found
Checks run 1
Cues 2
Вторая реплика начинается ровно в ту миллисекунду, когда кончается первая. Это правильный тайминг, поэтому находок нет, но отчёт всё равно сообщает, что проверка выполнялась, — это не то же самое, что файл, который проверить не удалось.
Реплика внутри длинной
Субтитры
1
00:00:00,000 --> 00:00:10,000
Long opening line.
2
00:00:01,000 --> 00:00:02,000
Nested inside it.
3
00:00:03,000 --> 00:00:04,000
Also nested inside it.
Что находит отчёт
Overlapping cues — 2 found
Severity Cues Start End Measured
Error 1, 2 00:00:01.000 00:00:02.000 1000 ms
Error 1, 3 00:00:03.000 00:00:04.000 1000 ms
Обе короткие реплики пересекаются с длинной и не пересекаются друг с другом. Каждое сравнение идёт с самым дальним достигнутым концом, поэтому вторая короткая реплика тоже попадает в отчёт, хотя реплика непосредственно перед ней до неё не дотягивается.
Частые вопросы
Что именно считается пересечением субтитров на этой странице?
Реплика, начало которой раньше самого дальнего уже достигнутого конца в файле. Реплики, которые лишь соприкасаются — одна кончается в 00:00:04,000, следующая начинается в 00:00:04,000, — пересечением не считаются и в отчёт не попадают. Пересечение в одну миллисекунду попадает, потому что оно есть.
Меняет ли этот инструмент мой файл субтитров?
Нет. Файл читается, на выходе получается отчёт, и ни один таймкод не переписывается. Удаление пересечений — отдельный инструмент, и разделение проверки и исправления означает, что отчёт, который вы отдаёте заказчику, описывает исходный файл, а не версию, уже отредактированную этой страницей.
Как вычисляется величина пересечения?
От начала более поздней реплики до более раннего из двух концов, в миллисекундах. Для реплики, целиком лежащей внутри длинной, пересечением считается вся эта реплика. Сравнение идёт с самым дальним достигнутым концом, а не с непосредственно предыдущей репликой, поэтому три реплики, поставленные на один момент, дают две находки, а не одну.
В каких форматах субтитров можно искать пересечения?
В десяти, где хранятся и начало, и конец: SRT, WebVTT, ASS, SSA, SBV, SMI, MicroDVD, TTML, JSON и CSV. LRC и обычный текст в список не входят: там одно время на строку, сравнивать нечего, поэтому такой файл сначала нужно конвертировать.
Что лежит в отчёте, который я скачиваю?
Шапка с именем файла, форматом, в котором он прочитан, числом реплик и частотой кадров там, где формат хранит кадры; строка о всём, что пришлось исправить во время чтения; затем по разделу на каждую проверку с номерами реплик, обоими таймкодами и измеренными миллисекундами по каждой находке. То же содержимое доступно как PDF для чтения и как CSV для сортировки в таблице.
Почему файл с пересечениями проигрывается так, будто всё в порядке?
Потому что решение о том, что рисовать, когда две реплики попадают на один момент, принимает плеер, и этого решения в файле нет. Одни плееры показывают более позднюю реплику, другие ставят обе, а реплика с позицией может оказаться в углу, где визуально ничему не мешает. Отчёт говорит, что на самом деле записано в файле, — именно это и можно исправить.
Можно проверить целый сезон за один раз?
Да. Перетащите все файлы сразу, они проверяются по очереди, каждый со своим отчётом, и отчёты скачиваются одним архивом. Прогресс показывается по каждому файлу, а запуск можно остановить на середине, и ничего не останется висеть в фоне.