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

Растянуть субтитры под видео

ТаймингМасштабирование всего таймлайна
Или вставьте текст субтитров

Параметры

Сколько длится видео — в миллисекундах, секундах или таймкоде (1500, 24m, 00:24:00,000 подойдут). Коэффициент вычисляется из самого файла: измеряется последний момент, когда какая-либо реплика ещё на экране, и именно его растягивают или сжимают до этой длины. Полезно, когда вы знаете длительность версии, а не коэффициент.

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

Заполните Целевая длина, чтобы запустить.

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

Поле цели принимает длину в любой форме — миллисекунды, секунды и минуты с суффиксом s или m, полный таймкод, — потому что это длина, а не момент на шкале. Более короткая цель сжимает файл, а не растягивает: отдельного переключателя нет, потому что слишком длинный файл — та же задача в другую сторону.

Всё отсчитывается от нуля, поэтому вступление до первой реплики масштабируется вместе с остальным; SRT, WebVTT, ASS, SSA, SBV, SMI, MicroDVD, TTML, JSON и CSV читаются по содержимому, обычный текст и LRC отклоняются, а расчёт идёт в браузере без отправки файлов.

Примеры

Восьмисекундный файл против десятисекундного видео

Вход

1
00:00:01,000 --> 00:00:03,000
Hello there.

2
00:00:05,000 --> 00:00:08,000
Second line.

Выход

1
00:00:01,250 --> 00:00:03,750
Hello there.

2
00:00:06,250 --> 00:00:10,000
Second line.

Целевая длина 00:00:10,000, поэтому отношение — 10 делить на 8 секунд файла, то есть 1,25, и ничего не пришлось считать вручную. Последняя реплика попадает ровно на десятую секунду, потому что относительно этого момента измерялось отношение, а первая едет на четверть своего расстояния от нуля.

Файл длиннее своего видео

Вход

1
00:00:00,000 --> 00:00:10,000
A long opening line.

2
00:00:02,000 --> 00:00:03,000
Short.

3
00:00:04,000 --> 00:00:05,000
Also short.

Выход

1
00:00:00,000 --> 00:00:06,000
A long opening line.

2
00:00:01,200 --> 00:00:01,800
Short.

3
00:00:02,400 --> 00:00:03,000
Also short.

Цель 6s при файле на десять секунд — это направление сжатия с отношением 0,6. Файл длиной десять секунд потому, что там кончается первая реплика, а не последняя записанная: её конец всего в пяти секундах от нуля, и измерение по ней дало бы отношение 1 и вернуло файл без изменений.

Начальный фрагмент тоже двигается

Вход

1
00:01:00,000 --> 00:01:02,000
Lead-in ends, speech starts.

2
00:02:00,000 --> 00:02:02,000
One minute in.

Выход

1
00:01:30,000 --> 00:01:33,000
Lead-in ends, speech starts.

2
00:03:00,000 --> 00:03:03,000
One minute in.

Цель 3m3s при файле, самое позднее окончание которого 2m2s, даёт отношение 1,5. Поле принимает минуты, а также 183000 или 00:03:03,000 — все три значат одно и то же. Первая реплика открывалась на минуте и теперь открывается на полутора: всё отсчитывается от начала шкалы, поэтому тихое вступление растянулось вместе с диалогом.

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

Как узнать длину моего файла субтитров?

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

Что если заданная длина короче, чем файл уже есть?

Файл сжимается, а не растягивается, и переключать ничего не нужно: файл на 10 минут с целью 6 минут умножается на 0,6, и каждая реплика сохраняет 60% времени на экране. Это поднимает скорость чтения каждой строки, и перед сдачей вещателю стоит проверить её отдельной страницей.

Почему первый субтитр сдвинулся, хотя я хотел выровнять только конец?

Потому что отношение применяется к расстоянию от нуля. У файла, первая строка которого открывается на минуте, при растяжении в 1,5 раза она откроется на полутора минутах, и тихое вступление растянется вместе с диалогом. Если заставка фиксирована, а неверен только хвост, это не задача пропорции: нужен постоянный сдвиг или двухточечная синхронизация.

Можно ли ввести целевую длину в минутах, а не таймкодом?

Да. Поле принимает голое число миллисекунд, длительность вида 90s, 24m или 1h2m и полный таймкод 00:24:00,000 — все формы означают одно и то же. Берите ту, которую показывает ваш видеоредактор: перепечатывание числа в другую форму и есть источник опечаток.

Субтитры всё ещё не совпадают после растяжения — что ещё может быть не так?

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

Что будет, если оставить поле целевой длины пустым?

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

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