Змінити закінчення рядків
Або вставте текст субтитрів
Параметри
Кожен рядок файлу закінчується або одним невидимим символом (LF), або двома (CRLF). Плеєри, редактори й інструменти субтитрів читають обидва, тож це майже ніколи не причина того, що файл субтитрів поводиться неправильно — дві причини, чому це все ж так: складальний конвеєр або строгий парсер, що відкидає інший варіант, і інструмент порівняння, що показує кожен рядок зміненим через різні закінчення. LF тут за замовчуванням, бо його використовують Unix, macOS і веб, і бо файл, що вже має його, не чіпається. Вибір CRLF перетворює обидва види наявних закінчень, тож змішаний файл виходить однорідним.
У якій частоті кадрів пораховано таймінги. На сторінках форматів це те, що потрібно MicroDVD, бо він зберігає час як номери кадрів. На сторінках частоти кадрів це частота, за якою файл синхронізували — версія, для якої робили субтитри, — а друге поле сторінки приймає частоту відео, з яким ви будете їх використовувати. 23,976, 24, 25, 29,97, 30, 50, 59,94 і 60 — найпоширеніші. Помилка зміщує весь таймлайн, а на сторінках частоти кадрів — на відношення, а не на фіксовану величину.
Закінчення рядка — це символ або пара символів, що завершує рядок, і у звичайному вжитку їх два. Системи Unix завершують рядок одним символом LF; Windows — двома, CR, а потім LF. Обидва виглядають на екрані однаково, і обидва плеєри субтитрів читають однаково, тому ця різниця лишається невидимою, доки вона не почне важити для чогось далі.
Що важить: контроль версій, де кожен рядок файлу може виглядати зміненим через зміну закінчень; скрипти збірки й конвеєри, що відрізають останній символ рядка й лишаються із зайвим поверненням каретки, коли чекали нового рядка; інструменти, що ділять файл за LF і отримують повернення каретки, приклеєне до останнього поля; і будь-яка специфікація здачі, що називає одне з двох. Файл субтитрів, який треба порівняти з іншим або з’єднати з іншим, — це файл, чиї закінчення рядків є частиною його інтерфейсу.
Сторінка навмисно однакова щодо того, що виробляє. Файл зі змішаними закінченнями — частина рядків CRLF, бо його редагували у Windows, частина LF, бо його редагували будь-де інде, — виходить цілком у вибраному вами стилі, бо сторінка спершу нормалізує закінчення до LF, а потім застосовує ваш вибір. Це не те саме, що конвертувати вже правильні закінчення й лишити решту: це означає, що відповідь на питання «який стиль у цього файлу» перестає залежати від того, на який рядок ви дивитеся, — а це єдина версія відповіді, корисна для скрипта.
Голе повернення каретки, закінчення рядка Mac до OS X, обробляється разом з усім іншим. Його вже ніхто не вибирає, але файли з ним ще трапляються, і файл, чиї рядки закінчуються так, для кожного інструмента, що шукає лише LF, є одним рядком. Нормалізація спершу означає, що ці файли виходять правильними, а не одним величезним субтитром.
Дві панелі на цій сторінці — єдине місце в родині, де різницю видно безпосередньо: закінчення рядка — справжній символ, і файл із рядками, що виглядають подвійно розставленими в переглядачі, який їх не ховає, — це файл із CRLF. Приймаються всі дванадцять форматів, бо закінчення рядка — властивість тексту, а не формату субтитрів; звичайний транскрипт теж має рядки. Нічого не завантажується, і файл читається, змінюється й записується у вашому браузері.
Приклади
Перетворення файлу Unix на закінчення Windows
Вхід
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
Результат
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
Кожне закінчення рядка стає двома символами, включно з порожнім рядком між репліками: той порожній рядок теж рядок, і конвертація, що його пропустила б, лишила б файл, чий розділювач реплік і далі голе LF. Очікуваний текст виписує закінчення парами CR LF, щоб кількість можна було прочитати просто з нього, а більше у файлі ніщо не зрушило.
Перетворення файлу Windows назад на закінчення Unix
Вхід
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Результат
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Напрямок із видимим наслідком. Файл, що зберігає зайве повернення каретки, у деяких редакторах показується як такий, що має порожній рядок після кожного рядка, а в конвеєрі оболонки — як повернення каретки, приклеєне до кінця останнього поля. Відео, таймкоди й текст в обох файлах ідентичні; різниця — символ у кінці кожного рядка, і саме цей напрямок його прибирає.
Файл, редагований на двох машинах, зроблено однаковим
Вхід
1
00:00:01,000 --> 00:00:02,000
Mixed endings.
2
00:00:03,000 --> 00:00:04,000
Second.
Результат
1
00:00:01,000 --> 00:00:02,000
Mixed endings.
2
00:00:03,000 --> 00:00:04,000
Second.
Той самий файл, змінений на двох машинах: частина рядків закінчується CRLF, частина LF, а один розділювач реплік записаний обома способами. Вихід однаковий, і в цьому суть — файл більше не означає різного залежно від того, який рядок ви читаєте. Наївний пошук із заміною помиляється в цьому випадку в обидва боки: в одному лишає рядки LF без змін, в іншому дає подвоєне повернення каретки.
Часті запитання
Як побачити, які закінчення рядків використовує файл субтитрів?
У більшості редакторів стиль закінчення показано в рядку стану як LF, CRLF або суміш. З оболонки файл із закінченнями CRLF показує повернення каретки в кінці кожного рядка, якщо дивитися інструментом, що робить керівні символи видимими. Прямий тест — подивитися на байти в кінці рядка: один 0A — це LF, а пара 0D 0A — CRLF.
Що сторінка робить із файлом субтитрів зі змішаними закінченнями?
Робить їх однаковими. Файл спершу нормалізується до LF, а потім конвертується у вибраний стиль, тому файл, де частина рядків закінчується одним способом, а частина іншим, виходить цілком однаковим, а не частково конвертованим. Файли потрапляють у такий стан через редагування на кількох машинах, і саме суміш робить порівняння з іншою копією файлу нечитабельним.
Чи змінюють закінчення рядків таймкоди субтитрів або текст реплік?
Ні. Репліки, їхні номери, початок і кінець і слова в них ідентичні до і після; змінюється один або два символи в кінці кожного рядка. Плеєр читає обидва файли однаково, і саме тому цю конвертацію можна робити заради вимоги здачі, не хвилюючись за самі субтитри.
Мені конвертувати закінчення субтитрів у LF чи в CRLF?
У LF, якщо щось перед вами не називає CRLF. Це те, що очікують інструменти Unix, більшість конвеєрів збірки й специфікація WebVTT, і це робить файл на один байт коротшим на рядок. Вибирайте CRLF, коли цього просить специфікація здачі або інструмент, що працює лише під Windows, і пам’ятайте, що вибір стосується файлу, а не всього проєкту: файл субтитрів, який здають окремо, може відрізнятися від решти.
Чому конвертація в CRLF змінює й порожній рядок між субтитрами?
Бо той порожній рядок — це рядок, і його закінчення таке саме закінчення рядка, як будь-яке інше. SRT розділяє репліки порожнім рядком, тому файл, конвертований у CRLF, чий розділювач реплік лишився голим LF, мав би посеред однакового файлу одне закінчення іншого виду — саме ту суміш, яку ця сторінка й існує, щоб прибрати. Те саме стосується останнього рядка файлу.
Чи конвертуються старі повернення каретки Mac?
Так. Файл, чиї рядки закінчуються голим поверненням каретки, стилем Mac OS до OS X, нормалізується разом з усім іншим, тому виходить у вибраному вами стилі, а не лишається одним довгим субтитром. На панелі немає варіанта CR, бо файлів так уже ніхто не пише, але файли, що вже такі, читаються й переписуються правильно.