Перейти до основного вмісту
SubtitleMatrix

Конвертувати non-drop у drop-frame

ТаймкодDrop-frame таймкод
Або вставте текст субтитрів

Параметри

30 fps non-drop і 29,97 drop-frame записують той самий годинник по-різному, і це поле вибирає, у який бік файл читається й у який записується назад. Репліка за годину читається як 01:00:00,000 за одним і 01:00:03,600 за іншим — вони розходяться на 3,6 секунди за годину, і це не похибка округлення. Заголовок сторінки називає один напрямок, і це поле пропонує лише його, тож файл, який ви отримуєте, — це файл, про який сторінка. У тексті нічого не змінюється: жодна репліка не перетаймовується щодо відео, жодна частота кадрів не конвертується, а репліка в межах першої хвилини години повертається точно такою, як увійшла, бо там не відкидається жодна мітка кадру.

У якій частоті кадрів пораховано таймінги. На сторінках форматів це те, що потрібно MicroDVD, бо він зберігає час як номери кадрів. На сторінках частоти кадрів це частота, за якою файл синхронізували — версія, для якої робили субтитри, — а друге поле сторінки приймає частоту відео, з яким ви будете їх використовувати. 23,976, 24, 25, 29,97, 30, 50, 59,94 і 60 — найпоширеніші. Помилка зміщує весь таймлайн, а на сторінках частоти кадрів — на відношення, а не на фіксовану величину.

Ця сторінка перенакшує кожен таймкод у файлі субтитрів із 30 кадрів/с non-drop у 29,97 кадру/с drop-frame. Киньте файл, запустіть — і початок і кінець кожної репліки повернуться записаними інакше. Слова, номери реплік, порядок реплік і переноси рядків належать файлові й лишаються точно як були.

Дві умовності пишуть той самий годинник по-різному, і файл має бути в тій, у якій перебуває решта конвеєра. Drop-frame відраховує 30 позначок за секунду, але пропускає дві з них щохвилини, крім кожної десятої, — так він тримається настінного годинника, поки non-drop поволі відстає від нього. За годину вони розходяться на 3,6 секунди: 01:00:00,000 за non-drop — це 01:00:03,600 за drop-frame. Цей розрив не похибка округлення, і його не згладжують: він зростає разом із програмою, сягаючи 36 секунд за десять годин.

У першій хвилині години ніщо не рухається, бо там жодної позначки не пропущено, і обидві умовності пишуть цей відрізок однаково. Це правда для годинників, що вже стоять на тіку 30 кадрів/с — 00:00:02,000 такий, — а годинник, що стоїть між двома тіками, зсувається до найближчого, до 17 мілісекунд. Читання годинника як таймкоду завжди прив’язує його до сітки кадрів по всьому файлу; у першій хвилині прив’язка — єдине, що рухається. Часи файлу субтитрів зазвичай приходять із покадрово точного інструмента й уже стоять на сітці, ось чому цей відрізок часто справді повертається байт у байт.

Жоден формат субтитрів, який тут читають, не має поля, що записує, у якій умовності годинник: SRT, WebVTT, ASS, SSA, SBV, SAMI, MicroDVD, TTML, JSON і CSV просто пишуть час. Тож сторінка змінює числа, а те, яку умовність вони означають, лишається властивістю вашого конвеєра — точно як була до того, як файл прийшов. Чого немає у файлі, того не можна в нього вписати, і вдавати інакше було б гірше, ніж сказати це.

Це не перетворення частоти кадрів. Файл, виставлений для відео 25 кадрів/с, тут не перетаймовують, і ніщо не розтягують і не стискають проти відео: таймінги зберігають проміжки, змінюється лише спосіб запису. Якщо вам потрібна інша робота — файл субтитрів, чиї проміжки йдуть за іншою частотою кадрів, — для неї є власна сторінка. Нічого не завантажується: файл читають і записують у вкладці браузера, тож матеріал, який не може покинути машину, лишається на ній.

Приклади

Файл на п’ятій хвилині

Вхід

1
00:05:00,000 --> 00:05:02,000
The room is dark.

2
00:10:00,000 --> 00:10:03,000
A cold night.

Результат

1
00:05:00,333 --> 00:05:02,333
The room is dark.

2
00:10:00,600 --> 00:10:03,600
A cold night.

Дві репліки не рухаються на ту саму величину, і в цьому вся операція: на п’ятій хвилині drop-frame пропустив десять позначок, тож годинник читається на 333 мс пізніше; на десятій він пропустив вісімнадцять, тож читається на 600 мс пізніше. Текст і номери реплік належать файлові — переписують лише два значення годинника на репліку.

Той самий файл на одній годині

Вхід

1
01:00:00,000 --> 01:00:03,000
An hour into the programme.

Результат

1
01:00:03,600 --> 01:00:06,600
An hour into the programme.

На одній годині дві умовності розходяться на 3,6 секунди, тобто 108 пропущених позначок. Це число для звірки зі сторінкою: прочитайте перший рядок продукту, і він має бути рівно на 3600 мс пізніше за перший рядок входу. Обидва краї репліки рухаються, тож репліка зберігає довжину.

Репліка в межах першої хвилини

Вхід

1
00:00:02,000 --> 00:00:04,000
Nothing to re-label yet.

2
00:05:00,000 --> 00:05:02,000
This one does move.

Результат

1
00:00:02,000 --> 00:00:04,000
Nothing to re-label yet.

2
00:05:00,333 --> 00:05:02,333
This one does move.

Перша репліка повертається байт у байт, а друга рухається, в тому самому прогоні. Упродовж першої хвилини години жодної позначки не пропущено, тож обидві умовності пишуть ці шістдесят секунд однаково, а 00:00:02,000 уже стоїть на тіку 30 кадрів/с, тож із ним нічого не змінюється. Годинник між двома тіками зсунувся б до найближчого, до 17 мс, — та сама прив’язка, яку сторінка застосовує по всьому файлу. Одна репліка незмінена поруч з однією зсунутою — очікуваний результат, а не незавершений прогін.

Часті запитання

Чим drop-frame таймкод відрізняється від non-drop?

Обидва відраховують 30 позначок за секунду, але 29,97 кадру/с не дає 30 кадрів за секунду — воно дає близько 29,97, тож годинник, що рахує 30 позначок за секунду, поволі втрачає ґрунт проти реального часу. Drop-frame виправляє це, пропускаючи дві позначки на початку кожної хвилини, крім кожної десятої: позначки викидають, хоч кадри ні. Non-drop зберігає кожну позначку й дрейфує. Записані, ці дві виглядають як числа одного роду; прочитані проти того самого кадру, вони розходяться на 3,6 секунди за годину й далі розходяться, чим довше йде програма.

Чому репліка на одній годині виходить на 3,6 секунди пізніше, ніж увійшла?

Бо 3,6 секунди — це те, у що складається година пропущених позначок: 2 позначки за хвилину протягом 54 хвилин із кожних 60, по 33,37 мс на позначку, тобто 108 позначок або 3600 мс за годину. Сторінка не додає затримку — вона пише ті самі кадри в іншій умовності, а інша умовність у цій точці програми читається пізніше. Репліка на 01:00:00,000 входить і 01:00:03,600 виходить; обидва її краї рухаються, тож репліка зберігає довжину до мілісекунди.

Чому перша хвилина мого файлу повернулася без змін?

Бо впродовж першої хвилини години жодної позначки не пропущено, тож drop-frame і non-drop пишуть цей відрізок однаково: 00:00:02,000 означає 60 кадрів в обох, а 60 кадрів записано однаково так чи так. Дрейф починається на першій хвилинній межі й далі зростає. Є ще одна річ, здатна зсунути час у цьому відрізку: читання годинника як таймкоду прив’язує його до найближчого тіку 30 кадрів/с, тож значення між двома тіками, як-от 00:00:02,010, повертається як 00:00:02,000. Часи, скопійовані з покадрово точного інструмента, уже на сітці й не рухаються взагалі.

Який напрямок мені потрібен — non-drop у drop-frame чи навпаки?

Залежить від того, з чого читали таймкоди у вашому файлі. Якщо ви взяли таймінги з плеєра або редактора, виставленого на non-drop, а конвеєр, у який ви здаєте, працює в drop-frame, це ця сторінка. Якщо файл ставили проти дисплея drop-frame, а інструмент нижче за течією чекає non-drop, вам потрібна інша сторінка, яка рухає годинники в протилежний бік на ті самі 3,6 секунди за годину. Швидкий спосіб їх розрізнити: запустіть файл тут і порівняйте одну репліку — якщо годинник у продукті читається пізніше за вхідний, цей напрямок і був потрібний.

Чи змінює ця сторінка частоту кадрів моїх субтитрів?

Ні. Ніщо не масштабують і не розтягують: репліка, що тривала дві секунди, і далі триває дві секунди, а проміжки між репліками незмінні, бо кожна репліка рухається на величину, що залежить від її місця, а не від співвідношення. Файл, виставлений для відео 25 кадрів/с, тут теж не перетворюють на 29,97 — поле для частоти кадрів існує, бо MicroDVD зберігає свої таймінги як номери кадрів і без неї не читається. Перетворення проміжків файлу з однієї частоти кадрів на іншу — окрема операція зі своєю сторінкою.

Чи сказано десь у файлі, що його таймкоди тепер drop-frame?

Ні, і жоден формат, який тут читають, не міг би: SRT, WebVTT, ASS, SSA, SBV, SAMI, MicroDVD, TTML, JSON і CSV зберігають час і нічого про те, як його відраховано. Це вже було правдою для файлу, який ви кинули. Тож сторінка змінює числа, а яку умовність вони означають, лишається тим, що каже ваш конвеєр, — та сама домовленість, що була раніше, тепер із числами, що їй відповідають. Якщо інструмент нижче за течією має власне налаштування drop-frame, саме воно й читає ці значення.

Споріднені інструменти