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

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

Таймкод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 — найпоширеніші. Помилка зміщує весь таймлайн, а на сторінках частоти кадрів — на відношення, а не на фіксовану величину.

Ця сторінка перенакшує кожен таймкод у файлі субтитрів із 29,97 кадру/с drop-frame назад у 30 кадрів/с non-drop, тож кожен годинник відступає на сталу величину, що зростає разом із програмою: нічого в першій хвилині години, 3,6 секунди за годину, 36 секунд за десять годин. Слова, номери реплік, порядок реплік і переноси рядків належать файлові й виходять недоторканими.

Файл, для якого ця сторінка, ставили проти дисплея або апарата, що рахував у drop-frame — звична річ на матеріалі 29,97, бо drop-frame є умовністю, яка тримається настінного годинника, — а все нижче за течією читає годинники як non-drop. Прочитані так, кожен таймкод у файлі завеликий на величину, що весь час зростає, тож субтитри сідають раніше й дедалі раніше, поки йде програма. За пів години похибка 1,8 секунди, і вона не перестає зростати ніде у файлі. Ось чому виправлення — не поштовх: це те саме перенакшення, застосоване до кожної позначки часу, з величиною поправки, заданою місцем репліки.

Читати годинник як таймкод означає прив’язати його до найближчого тіку 30 кадрів/с, а в drop-frame двох таких тіків не існує. Drop-frame пропускає позначки ;00 і ;01 на початку кожної хвилини, крім кожної десятої: він рахує 00:00:59;28, 00:00:59;29 і потім стрибає на 00:01:00;02, — тож вхідний 00:01:00,000 називає мить, якої ця умовність не має способу записати. Його відтягують до останньої позначки, яку вона вміє записати, 00:00:59,933, на 67 мілісекунд раніше. Це справжня межа арифметики, а не допуск, і вона сказана на сторінці, а не згладжена: за дві години таких 216.

Репліку, що після прив’язки стає коротшою за один кадр, записати взагалі не можна, бо обидва її краї сідають на той самий тік, а репліка, чий кінець дорівнює початкові, не є реплікою. Такі відкидають і рахують у звіті про втрати над робочою областю, а не тихо розтягують на кадр. На практиці це зачіпає лише матеріал, порізаний покадрово, але сторінка не сподівається, що це рідкість, — вона повідомляє кількість, а файл без таких реплік не повідомляє нічого.

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

Приклади

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

Вхід

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:04:59,667 --> 00:05:01,667
The room is dark.

2
00:09:59,400 --> 00:10:02,400
A cold night.

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

Та сама поправка на одній годині

Вхід

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

Результат

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

За годину drop-frame-ів 01:00:03,600 — це те, що non-drop називає 01:00:00,000: 108 пропущених позначок, 3600 мс. Це число, з яким варто звіряти сторінку: перший рядок продукту має бути рівно на 3600 мс раніше за перший рядок входу, а файл, що вийшов з апарата drop-frame, має сісти на круглу годину.

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

Вхід

1
00:00:04,000 --> 00:00:06,000
Still early in the file.

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

Результат

1
00:00:04,000 --> 00:00:06,000
Still early in the file.

2
00:04:59,667 --> 00:05:01,667
This one does move.

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

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

Чому субтитри виходять раніше, а не пізніше?

Бо годинники у файлі були більші за миті, які називають. Non-drop відраховує 30 позначок за секунду, наче 29,97 кадру/с дає 30 кадрів за секунду, тож він поволі забігає наперед реального часу; drop-frame пропускає дві позначки за хвилину, щоб триматися за ним. Годинник, знятий з апарата drop-frame і потім прочитаний як non-drop, тому вказує далі, ніж мав би, і виправлення віднімає цей надлишок: 333 мс на п’яти хвилинах, 3600 мс на годині, 36000 мс на десяти годинах. Для кожного годинника в першій хвилині години величина нульова, тож найменша поправка, яку сторінка колись застосовує, — та, що на першій хвилинній межі, і жоден годинник не опускається нижче 00:00:00.

Що стається з таймкодом drop-frame, який неможливо записати?

Його відтягують до останньої позначки, яку можна записати. Кожній хвилині з пропуском у drop-frame бракує позначок ;00 і ;01, тож 00:01:00,000 і 00:01:00,010 — не годинники, які ця умовність уміє показати: вони сідають на 00:00:59,933, на 67 мілісекунд раніше. Це єдине місце на цій сторінці, де продукт не є точним перенакшенням, і воно обмежене — дві позначки на кожну хвилину з пропуском, 216 значень за дві години, — тож сторінка називає його тут, а не лишає вам знаходити в різниці.

Чи може репліка зникнути з мого файлу?

Лише репліка, коротша за один кадр, 33,37 мс. Дві речі можуть загнати репліку на один кадр: прив’язка, описана вище, коли репліка на десять мілісекунд, як-от від 00:01:00,000 до 00:01:00,010, має обидва краї, стягнені на 00:00:59,933, і репліка, що вже була коротшою за кадр, коли прийшла. Репліку, чий початок і кінець — одна мить, записати не можна, тож її відкидають, а кількість з’являється у звіті про втрати над робочою областю. Файл без таких не повідомляє нічого, і це звичайний випадок.

Чи змінюється у файлі щось, крім значень годинника?

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

Яку частоту кадрів ставити в поле?

Будь-яку, яку матеріал справді має; на це перетворення вона не впливає. 30 і 29,97 у назві сторінки — це умовності лічби, записані в рядку таймкоду, а не частота кадрів відео, тож ніщо тут не масштабується числом, яке ви введете. Поле обов’язкове лише тому, що MicroDVD зберігає таймінги як номери кадрів, а не як годинники, і прочитати файл MicroDVD без знання його частоти кадрів неможливо.

Якщо я запущу протилежну сторінку на цьому продукті, чи повернеться оригінальний файл?

Так, байт у байт, доки жоден таймкод не потрапив у клас, який drop-frame не вміє записати. Обидві сторінки — та сама арифметика, прочитана в протилежних напрямках: ця віднімає зростаючу величину, інша додає її назад, а величини задані положенням кожної репліки, а не сталим зсувом. Виняток — випадок прив’язки: 00:01:00,000, що вийшов як 00:00:59,933, повертається як 00:00:59,933, і це єдиний клас позначок часу, для якого пара не є зворотним колом.

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