Конвертер частоты кадров
Или вставьте текст субтитров
Параметры
В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.
Частота кадров версии, с которой вы будете использовать субтитры, — видео, которое действительно будете проигрывать. Применяемый коэффициент — первое поле, делённое на это; так 24 в 25 дают 0,96: фильм идёт на PAL на 4% быстрее, и 100-минутная картина помещается на 96-минутную кассету. Если перепутать поля местами, весь таймлайн сдвинется в неверную сторону на ту же величину.
Эта страница пересчитывает тайминг субтитров с одной частоты кадров на другую: каждый таймкод умножается на отношение исходной частоты к целевой. Например, 23,976 → 25 даёт коэффициент 0,95904, и вся дорожка выходит на 4,096 % раньше. Меняются только времена и длительность реплик — текст, разрывы строк, оформление и порядок остаются на месте, а в MicroDVD правится одна строка объявления частоты, потому что номера кадров там не двигаются. Файлы SRT, WebVTT, ASS, SSA, SBV, SAMI, MicroDVD, TTML, JSON и CSV читаются по содержимому, а не по расширению; LRC и обычный текст не принимаются, потому что в них нет времени окончания, к которому прикладывать коэффициент. Ничего не загружается на сервер, и целый сезон проходит через очередь за один запуск.
Примеры
Пара, с которой начинаются поля
Вход
1
00:00:02,000 --> 00:00:04,000
Hello there.
2
00:00:30,000 --> 00:00:32,000
Half a minute in.
Выход
1
00:00:01,918 --> 00:00:03,836
Hello there.
2
00:00:28,771 --> 00:00:30,689
Half a minute in.
23,976 → 25 — это 0,95904, поэтому каждый таймкод сохраняет 95,904 % своего значения. Реплика на двух секундах сдвигается на 82 мс, на тридцати секундах — на 1 229 мс: в пятнадцать раз дальше от нуля, в пятнадцать раз больше сдвиг. Больше в файле ничего не меняется, а оба края каждой реплики умножаются на одно число, поэтому их длина сокращается в той же пропорции.
Почему номера кадров остаются на месте
Вход
{1}{1}25
{50}{100}Hello
{150}{200}World
Выход
{1}{1}24
{50}{100}Hello
{150}{200}World
Кажется, что ничего не произошло, и номера кадров действительно не сдвинулись: одни и те же кадры при другой частоте — всё ещё кадры 50, 100, 150 и 200. Изменилась частота в строке объявления, с которой начинается файл: 25 стало 24, и именно это двигает субтитры в плеере. Если пересчитать тот же файл, нигде не объявляя частоту, кадры умножились бы — это ответ для файлов, чей тайминг считали не в тех кадрах, а не для файлов, которые проигрывают с другой скоростью.
Файл, который начинается через минуту
Вход
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 later.
Выход
1
00:01:02,563 --> 00:01:04,648
Lead-in ends, speech starts.
2
00:02:05,125 --> 00:02:07,211
One minute later.
25 → 23,976 — это 1,0427094, обратное направление, и оно применяется от нуля: первая реплика стоит на минуте и уезжает на две с половиной секунды позже. Вступление — такая же часть дорожки, как любая тишина, поэтому масштабируется вместе со всем остальным. Если первый субтитр должен остаться на месте, а двигаться может только то, что после него, нужен фиксированный сдвиг или синхронизация по двум точкам, а не коэффициент.
Частые вопросы
Какую из двух частот кадров вводить в первое поле?
Ту, по которой считали файл, — ту версию, для которой делали субтитры, а не видео, которое вы собираетесь смотреть. Коэффициент равен первому полю, делённому на второе: файл, сделанный для 24 fps и нужный для 25 fps, берёт 0,96, а тот же файл на обратном пути с PAL — 1,0416667. Смысл имеет только пара: 0,96 сам по себе ничего не значит, пока неизвестно, из какой версии пришёл файл.
Можно ли ввести частоты кадров, которых нет в готовых парах?
Да. Для арифметики оба поля — свободный текст, и коэффициент считается из того, что вы ввели: 29,97, 30, 48, 59,94 и 60 работают. Шесть страниц этой группы существуют потому, что их пары встречаются на практике и потому что страница, называющая пару, может объяснить её причину. Если вы знаете коэффициент, а не частоты, страница масштабирования в группе «Тайминг» принимает процент напрямую.
Почему после пересчёта частоты кадров каждый субтитр стал короче?
Потому что оба края каждой реплики умножаются на один коэффициент. Двухсекундный субтитр при 0,96 выходит длиной 1,92 секунды, а при 0,95904 — 1,918. Из текста ничего не вырезается: реплике даётся меньше времени, потому что вся дорожка проигрывается быстрее, и скорость чтения строки растёт ровно на те же 4,096 %.
Почему в файле MicroDVD номера кадров не меняются?
Потому что его таймкоды — номера кадров, а кадры не меняются: одни и те же планы при другой частоте остаются теми же кадрами. Пересчёт правит частоту, объявленную в первой строке файла, — именно по ней плеер превращает номера кадров обратно в секунды. Обратный случай — файл .sub, тайминг которого считали не в тех кадрах: там номера кадров действительно двигаются, и для этого есть страница 23,976 → 29,97.
Нужна ли отдельная страница для каждой пары частот кадров?
Нет, эта страница принимает любую пару. Остальные страницы группы — ярлыки, которые заполняют оба поля и объясняют пару: 24 и 25 для фильма против PAL, 23,976 и 25 для NTSC-фильма против PAL, 23,976 и 29,97 для путаницы в подсчёте кадров и 50 → 25 для дважды посчитанного чересстрочного материала. Здесь доступно всё то же самое; те страницы отличаются тем, что рассказывают, почему вашему файлу нужна именно эта пара.
Что будет, если в оба поля ввести одну и ту же частоту?
Ничего, и инструмент так и скажет, а не сделает вид, что поработал. Коэффициент 1 — это тождественное отображение, поэтому файл возвращается байт в байт. Это полезная проверка сама по себе: положите файл на эту страницу с одинаковыми частотами в обоих полях, и вы увидите ровно то, что с ним делают парсер и сериализатор, без арифметики частот кадров.