Обрезать субтитры по диапазону
Или вставьте текст субтитров
Параметры
Всё, что было на экране до этого момента, уходит. Реплика, начавшаяся раньше, но всё ещё видимая в этот момент, сохраняется и обрезается по краю. Оставьте пустым, чтобы окно начиналось с файла.
Всё, что начинается в этот момент или позже, уходит; реплика, заходящая за него, обрезается на этом месте. Сам момент в окно не входит: реплика, начинающаяся ровно в него, принадлежит следующему отрезку. Оставьте пустым, чтобы окно шло до конца файла.
В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.
Страница оставляет только ту часть файла, которая попадает во временное окно: вы задаёте начало, конец или оба значения, и всё остальное отбрасывается. Реплика, пересекающая границу окна, обрезается ровно по этой границе, а субтитр внутри окна остаётся без изменений. Правило — пересечение, а не место начала: субтитр, который начался до окна и ещё виден внутри, сохраняется с началом, подтянутым к границе. Окно полуоткрытое: момент закрытия в него не входит, поэтому соседние диапазоны не забирают одну и ту же реплику. Текст не перекодируется и не перенумеровывается, файл обрабатывается в браузере и не отправляется на сервер.
Примеры
Десятисекундное окно из середины файла
Вход
1
00:00:01,000 --> 00:00:02,500
Before the window.
2
00:00:04,000 --> 00:00:06,000
Crosses the start.
3
00:00:07,000 --> 00:00:08,000
Fully inside.
4
00:00:09,000 --> 00:00:11,500
Crosses the end.
5
00:00:14,000 --> 00:00:15,000
After the window.
Выход
2
00:00:05,000 --> 00:00:06,000
Crosses the start.
3
00:00:07,000 --> 00:00:08,000
Fully inside.
4
00:00:09,000 --> 00:00:10,000
Crosses the end.
Пять субтитров, четыре разных исхода, один проход. Первая реплика уже ушла к моменту открытия окна, а пятая ещё не появилась, поэтому обе отброшены. Вторая началась в четыре секунды, но в пять ещё говорила, поэтому остаётся, а её начало подтягивается к 5000 мс. Четвёртая теряет последние 1,5 секунды тем же способом. Третья не тронута вовсе.
Только нижняя граница: обрезать вступление
Вход
1
00:00:00,500 --> 00:00:02,000
Intro card.
2
00:00:02,500 --> 00:00:04,000
Still talking over the logo.
3
00:00:05,000 --> 00:00:06,000
First line of the programme.
Выход
2
00:00:03,000 --> 00:00:04,000
Still talking over the logo.
3
00:00:05,000 --> 00:00:06,000
First line of the programme.
Поле конца пустое, значит верхней границы нет и окно идёт до конца файла. Вступительная карточка отбрасывается, а строка, звучащая через трёхсекундную отметку, обрезается по ней. Пустое поле — не ноль: если вписать 0 в поле конца, получится пустое окно, и страница сообщит, что ничего не сделано.
Окно шире файла
Вход
1
00:00:01,000 --> 00:00:02,000
Short.
2
00:00:03,000 --> 00:00:04,000
Also short.
Выход
1
00:00:01,000 --> 00:00:02,000
Short.
2
00:00:03,000 --> 00:00:04,000
Also short.
Оба субтитра лежат внутри, поэтому оба возвращаются байт в байт. Ничего не сдвигается к началу окна: реплика на первой секунде остаётся на первой секунде, даже если окно открывается в нуле. Обрезка убирает то, что снаружи, и не двигает то, что внутри.
Частые вопросы
Что происходит с субтитром, который начался до окна, но ещё виден внутри?
Он сохраняется, а его начало подтягивается ровно к моменту открытия окна. Страница применяет правило пересечения: если хоть какая-то часть реплики попадает в окно, эта часть принадлежит результату. В этом главное отличие обрезки файла от сдвига участка таймлайна, и поэтому строка, звучащая через границу, не исчезает при разрезе.
Перенумеровываются ли субтитры после обрезки по временному окну?
Нет. Субтитр сохраняет свой номер из файла, поэтому сохранённый кусок, начинавшийся с реплики 2, по-прежнему начинается с номера 2, а пропуски в нумерации показывают, что было удалено. Перенумерация была бы отдельным изменением строк, о котором вы не просили, и мешала бы сверять обрезанный файл с исходником.
Почему субтитр, закончившийся ровно на границе окна, исчезает?
Потому что к моменту открытия окна он уже ушёл с экрана: граница принадлежит следующему окну. То же правило действует на другом конце: субтитр, начинающийся ровно в момент закрытия, относится к следующему участку. Обе границы полуоткрытые, и именно это не даёт двум соседним диапазонам одного файла претендовать на реплику на общем краю.
Можно ли при обрезке субтитров оставить одно из двух полей времени пустым?
Да, и это обычный способ работы со страницей. Пустое нижнее поле означает, что окно начинается с начала файла; пустое верхнее — что оно идёт до конца. Заполненное только нижнее поле обрезает вступление, только верхнее — хвост. Если оба поля пусты или конец не позже начала, страница сообщает, что ничего не сделано, вместо пустого файла.
Считается ли потерянным то, что отброшено при обрезке субтитров?
Нет. Удаление всего, что лежит вне окна, и есть задача страницы, поэтому это не записывается как потеря: итоговая строка говорит, сколько реплик отброшено и сколько обрезано на границе. Это отличается от страницы, которая теряет субтитры как побочный эффект другой операции, где отчёт о потерях — единственное место, где удаление вообще упоминается.
Почему LRC и обычный текст не принимаются для обрезки субтитров?
Потому что обрезка читает и записывает оба конца каждой реплики, а LRC и текст не хранят время окончания. Конец, выведенный из начала следующего субтитра, при записи вернулся бы как начало следующего, и результат оказался бы байт в байт равен исходнику — страница врала бы о том, что сделала. Принимаются SRT, WebVTT, ASS, SSA, SBV, SAMI, MicroDVD, TTML, JSON и CSV.