Найти слишком короткие субтитры
Или вставьте текст субтитров
Параметры
Длительность — 1000, 1s, 1.5s и 00:00:01,000 подойдут. Это граница между субтитром, который висит достаточно долго, чтобы его прочитали, и тем, который мелькает. Что происходит по другую сторону, зависит от страницы: закрытие промежутков держит короткую реплику на экране дольше, забирая добавленное время из следующего промежутка, чтобы ни одна реплика не накрыла слова следующей (последняя реплика в файле просто удлиняется), а страница проверки перечисляет все реплики короче границы и файл не трогает.
В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.
Субтитр, который мелькает, исчезает раньше, чем его успевают прочитать: текст на экране доли секунды, и зритель либо пропускает его, либо ловит половину. Страница перечисляет все реплики, которые проводят на экране меньше заданного минимума, — с таймкодами, фактической длительностью и минимумом, с которым их сравнивали, — и отдаёт отчёт, а не файл: PDF для чтения или CSV для таблицы.
Число и делает страницу полезной: список номеров реплик говорит, сколько проблем, а строка «400 мс при 1000 мс» говорит, насколько реплика недотягивает и нужны ли ей ещё 200 мс или её не должно быть вовсе. Минимум задаёте вы — это может быть внутренний стандарт, требование вещателя или догадка, — и он печатается рядом с каждой находкой, чтобы отчёт, прочитанный через полгода, всё ещё говорил, с чем его сравнивали. Граница включающая: реплика попадает в отчёт, только если она строго короче минимума, поэтому файл, нарезанный ровно по этому числу, выходит чистым, а LRC и обычный текст не принимаются — ни один из них не хранит конец, и длительность из одной отметки не измерить.
Примеры
Реплика, которая мелькает
Субтитры
1
00:00:01,000 --> 00:00:01,400
Yes.
2
00:00:03,000 --> 00:00:05,000
I was working late.
Что находит отчёт
Cue duration outside the limit — 1 found
Severity Cues Start End Measured Limit
Warning 1 00:00:01.000 00:00:01.400 400 ms 1000 ms
Четыреста миллисекунд при минимуме в одну секунду. Отчёт печатает оба числа рядом, и это превращает счёт в то, с чем можно работать: реплике нужно ещё 600 мс или её пора убрать.
Ровно на минимуме
Субтитры
1
00:00:01,000 --> 00:00:02,000
Where were you?
2
00:00:03,000 --> 00:00:05,000
I was working late.
Что находит отчёт
Cue duration outside the limit — Nothing found
Cues 2
Checks run 1
Ровно одна секунда при минимуме в одну секунду, и находок нет. Сравнение строгое, «меньше», а не «меньше или равно», поэтому порог означает самую короткую допустимую реплику; обратное чтение пометило бы любой файл, нарезанный точно по внутреннему минимуму.
Исправленный таймкод нулевой длины
Субтитры
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.
Что находит отчёт
Cue duration outside the limit — 1 found
Lost while reading: Timing × 1
Severity Cues Start End Measured Limit
Warning 2 00:00:03.000 00:00:03.001 1 ms 1000 ms
Одна битая строка даёт две находки, и это разные находки: шапка сообщает, что таймкод не читался в записанном виде, а строка говорит, что после исправления реплика на 999 мс короче минимума. Сообщить только об одной из них значило бы описать настоящую проблему файла наполовину.
Частые вопросы
Когда субтитр считается слишком коротким на этой странице?
Когда он проводит на экране меньше времени, чем заданный минимум в миллисекундах. Сравнение строгое, поэтому реплика ровно в минимум не попадает в отчёт. Минимум действует на весь запуск и печатается рядом с каждой находкой, которую он породил.
Какой минимум длительности выбрать?
На практике обычно берут около одной секунды, поэтому это значение и стоит по умолчанию: примерно столько нужно, чтобы прочитать строку из нескольких слов, не угадывая. Длинным строкам нужно больше, но это вопрос скорости чтения, а не длительности, и в вещательной работе иногда задают собственный порог. Какое бы число вы ни выбрали, оно ваше, а не стандарт, который применяет страница.
Укорачивает или удаляет ли страница короткие реплики?
Нет. Она читает файл и выдаёт отчёт, оставляя каждый таймкод на месте. Удлинение реплики сдвигает следующую, удаление оставляет дыру — и то и другое решения с последствиями, а задача страницы — показать, какие реплики заставляют их принять.
Попадает ли сюда реплика в одну миллисекунду?
Только если вы поставите минимум выше одной миллисекунды, что значение по умолчанию и делает. Чего страница не делает — не считает очень короткую длительность доказательством битого таймкода: реплика, записанная как 00:00:03,000 — 00:00:03,000, при чтении исправляется до одной миллисекунды, и об этой правке сообщает отдельная страница. Здесь миллисекунда сравнивается с вашим минимумом, как любая другая длительность.
Как вычисляется длительность реплики?
Из времени конца вычитается время начала, оба читаются из файла и хранятся целыми миллисекундами. Ничего не округляется и частота кадров не участвует, поэтому число в отчёте — ровно разница между двумя таймкодами в файле.
В каких форматах субтитров можно искать короткие реплики?
В десяти, где хранятся и начало, и конец: SRT, WebVTT, ASS, SSA, SBV, SMI, MicroDVD, TTML, JSON и CSV. LRC и обычный текст не принимаются, потому что длительности нужны два времени, а ни один из этих форматов их не хранит. Если файл в одном из них, сначала конвертируйте.
Почему реплика вообще оказывается слишком короткой?
Почти всегда из-за инструмента тайминга, а не из-за набора. Разделение длинной реплики на две оставляет обе половины короче исходной; сдвиг, наложивший реплику на следующую, подрезается следующим проходом; субтитр, извлечённый из иноязычного файла, сохраняет тайминг строки, с которой его перевели. В результате в файле есть реплика, которая до зрителя не доходит.