Перейти к основному содержимому
SubtitleMatrix

Найти субтитры с концом раньше начала

Проверка качестваНарушенный порядок времени
Или вставьте текст субтитров

Параметры

В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.

Реплика, которая кончается раньше, чем началась, — это таймкод, которого не может быть: 00:00:03,000 --> 00:00:03,000 или, хуже, конец раньше начала. Страница сообщает о файлах, где такая реплика была, и считает по правкам, которые пришлось сделать читателю, потому что таймкод такой формы вообще нельзя удержать в памяти — его заменяют настоящим до того, как произойдёт что-либо ещё, и на выходе всегда отчёт, никогда не изменённый файл.

Именно поэтому отчёт начинается с потерянного при чтении и только потом показывает находку: реплике, у которой конец не позже начала, выдаётся одна миллисекунда, чтобы остальной файл можно было прочитать, показать и экспортировать, число таких правок стоит в шапке, а находка под ней сообщает об одной ошибке без номера реплики, потому что правки считаются по ходу чтения, а не хранятся списком.

Ловушка, вокруг которой пришлось писать эту страницу, в том, что законная реплика длиной в одну миллисекунду выглядит точно так же, как исправленная, поэтому проверка не смотрит на длительности вовсе — она смотрит на запись о правках, и реплика, которая действительно длится одну миллисекунду, остаётся в покое. Отрицательная длительность и нулевая — один и тот же дефект и считаются вместе, а два формата не принимаются вовсе, и на этот раз причина на обеих сторонах одна: в LRC каждый конец выводится из следующей отметки, так что пара там не может выйти обратной, а в обычном тексте времён реплик нет, поэтому проверка любого из них дала бы чистый отчёт о поле, которого у формата нет.

Примеры

Реплика без длительности

Субтитры

1
00:00:01,000 --> 00:00:02,000
Where were you?

2
00:00:03,000 --> 00:00:03,000
I was working late.

Что находит отчёт

Cues ending before they start — 1 found

Lost while reading: Timing × 1

Severity   Cues   Start   End   Measured
Error      —      —       —     1 items

Конец равен началу. Читатель выдаёт реплике одну миллисекунду, чтобы файл можно было удержать, записывает правку, и отчёт печатает обе половины: строку о потерях в шапке и одну ошибку под ней. Доказательство — сама правка, а миллисекунда — лишь та форма, которую это доказательство принимает.

Реплика, которая действительно длится одну миллисекунду

Субтитры

1
00:00:01,000 --> 00:00:02,000
Where were you?

2
00:00:03,000 --> 00:00:03,001
I was working late.

Что находит отчёт

Cues ending before they start — Nothing found

Cues                2
Checks run          1
Lost while reading  Nothing

Написана вручную как реплика в одну миллисекунду и в отчёт не попадает. Это решение и определяет форму проверки: исправленная реплика нулевой длины тоже выходит длиной в одну миллисекунду, поэтому правило, которое ловило бы короткие длительности, объявило бы любой файл с битым таймкодом файлом невозможных коротких реплик.

Конец раньше начала

Субтитры

1
00:00:01,000 --> 00:00:02,000
Where were you?

2
00:00:05,000 --> 00:00:02,000
I was working late.

Что находит отчёт

Cues ending before they start — 1 found

Lost while reading: Timing × 1

Severity   Cues   Start   End   Measured
Error      —      —       —     1 items

С пяти секунд на две: тот же дефект, что и при нулевой длительности, считается по тому же правилу и описывается так же. В файле ничего не переписывается — исправленное время существует в копии читателя, чтобы остальной файл можно было обработать, и это не исправление, которое предлагает страница.

Частые вопросы

Что считается репликой, которая кончается раньше, чем начинается?

Время конца, которое не позже времени начала: равное ему, как в 00:00:03,000 — 00:00:03,000, или более раннее, как в 00:00:05,000 — 00:00:02,000. Оба случая — один дефект и считаются вместе, и оба считаются по правке читателя, а не по реплике, потому что таймкод такой формы нельзя удержать в памяти.

Почему отчёт не называет сами реплики?

Потому что эти правки подсчитываются во время чтения файла, а не собираются в список. Отчёт даёт число — одну ошибку и один элемент в строке потерь шапки, — и две половины описывают один и тот же факт со стороны шапки и со стороны находок. Если нужна точная реплика, ищите в файле её таймкоды, а не номер.

Реплика в одну миллисекунду — это проблема?

Здесь нет, и намеренно. Написанная вручную реплика в одну миллисекунду законна и в отчёт не попадает; попадает таймкод, который пришлось исправлять и который после этого хранится как одна миллисекунда. Проверка длительностей вместо проверки правок объявила бы каждый файл с репликой нулевой длины файлом невозможных коротких реплик, и это была бы неправильная находка дважды.

Исправляет ли эта страница найденные таймкоды?

Нет. Исправленное время существует только внутри браузера, чтобы остальной файл можно было прочитать и описать. Файл, который вы перетащили или скачали, не меняется, и сохранить исправленную версию с этой страницы нельзя: замена битого таймкода — операция, у которой на выходе файл субтитров, а не проверка.

В каких форматах можно искать реплики, кончающиеся раньше начала?

В десяти из двенадцати: SRT, WebVTT, ASS, SSA, SBV, SMI, MicroDVD, TTML, JSON и CSV. Двух нет, и это не упущение. В LRC одно время на строку, и каждый конец выводится из следующей отметки, поэтому пара там не может выйти обратной — проверка судила бы поле, которого у формата нет. В обычном тексте времён реплик нет вовсе. Если файл в одном из этих двух форматов, сначала конвертируйте его.

Откуда берутся такие битые таймкоды?

Их почти всегда порождает инструмент, а не человек. Пересчёт частоты кадров, который округляет не в ту сторону; сдвиг, применённый к одной реплике дважды; экспорт из таблицы, где столбец конца оставили пустым и он прочитался как ноль; субтитр, извлечённый из timed-text файла с маркером, у которого изначально не было длительности.

Можно проверить несколько файлов за один запуск?

Да. Перетащите сколько угодно файлов: они читаются по очереди, каждый даёт свой отчёт, и отчёты скачиваются вместе одним архивом. Очередь показывает прогресс по файлам, запуск можно отменить на середине, и ни один файл ни в какой момент не отправляется на сервер.

Похожие инструменты