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

Вилучити теги ASS зі субтитрів

Текст і оформленняВилучення розмітки й тегів
Або вставте текст субтитрів

Параметри

Одне поле, сім виборів, і кожен вибір має власну сторінку. Курсив, жирний, підкреслення й колір вилучають один різновид діапазону й лишають решту оформлення рядка. «Усе» вилучає кожен діапазон, який моделює інструмент — ті чотири плюс караоке-таймінг — і не чіпає нічого іншого в тексті. «HTML» робить те саме й додатково вимітає кутову розмітку, що лишилася в тексті, бо інструмент її не моделює, як-от теги мовця VTT <v Bob> і <c.className>. «ASS» робить те саме для блоків перекриття, очищаючи коди {...}, не розпізнані під час розбору, як-от {\fad(500,500)}. Ця сторінка заповнює поле вибором, який називає її заголовок, і не пропонує інших.

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

Ця сторінка очищає коди перекриття у файлі ASS або SSA: діапазони оформлення, караоке-таймінг, залишкові блоки ефектів і розміщення. Повертається простий текст із таймінгом — слова, таймінги реплік і власна структура файлу, а рядки стоять там, куди їх ставить їхній іменований стиль.

ASS — формат, що вміє сказати найбільше, і більшість сказаного записано кодами перекриття всередині тексту рядка. Частину цих кодів інструмент моделює — «{\i1}», «{\b1}», «{\c&H…&}», «{\k50}», — а частину ні: затемнення, рухи, масштабування, розмиття, усе записане блоками тієї самої форми. Ці незмодельовані блоки навмисно лишають у тексті, поки файл читають, бо з’їсти розмітку, якої інструмент не розуміє, означало б втратити дані. Ця сторінка і є та, що їх вимітає.

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

Один код лишається, і сторінка каже про це, а не дає вам його знайти: вирівнювання на дев’ять комірок, як-от «{\an8}», зберігається як записане. Воно кодує і вертикальне розміщення, і горизонтальне, а власне уявлення інструмента про вирівнювання охоплює лише ліво, центр і право, тож другу половину нема де зберегти. Напіврозуміння дало б файл, що неправильно проходить зворотне перетворення. Нічого не завантажується; файл, із якого нічого прибирати, повертається байт у байт.

Приклади

Оформлення й залишковий блок ефекту

Вхід

[Script Info]
Title: fade

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,{\fad(500,500)}{\i1}hello{\i0}

Результат

[Script Info]
Title: fade

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,hello

«{\fad(500,500)}» просить плеєр плавно показати рядок і сховати його за пів секунди в кожен бік. Інструмент ніколи його не моделював, тож воно сиділо в тексті, доки цей прогін його не вимете, — а пара курсиву поруч іде так само, лишаючи сам рядок. Ніщо в продукті не зберігає згадки, що затемнення взагалі було.

Позиційований рядок

Вхід

[Script Info]
Title: position

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,{\pos(100,200)}hello there

Результат

[Script Info]
Title: position

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,hello there

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

Вирівнювання на дев’ять комірок, що лишається

Вхід

[Script Info]
Title: alignment

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,{\an8}hello there

Результат

[Script Info]
Title: alignment

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,{\an8}hello there

Цей повертається без змін, і це не промах. «{\an8}» каже «зверху й по центру» одночасно, а вирівнювання інструмента охоплює лише ліво, центр і право, тож вертикальній половині нема де жити, і тег зберігають цілком, а не напівзрозумілим. Код позиції очищається, цей — ні.

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

Чому тег вирівнювання на дев’ять комірок переживає цю сторінку?

Бо інструмент не може відтворити його точно. Вирівнювання на кшталт «{\an8}» називає одну з дев’яти комірок, що кодує горизонтальну й вертикальну позицію одночасно, а власне вирівнювання інструмента має лише ліво, центр і право. Зберегти горизонтальну половину й відкинути іншу означало б зіпсувати зворотне перетворення, тому тег зберігають дослівно. Код позиції очищається, код вирівнювання — ні, і сторінка каже про це, а не лишає вам помічати самому.

Що таке блок перекриття і чому він у тексті?

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

Чи змінює очищення кодів перекриття таймінги або текст?

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

Чи відтворюватиметься продукт правильно після зникнення кодів?

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

Чи видаляє це й іменовані стилі з таблиці стилів?

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

Чи можна використати цю сторінку на файлі SRT, чи лише на ASS і SSA?

Можна кинути будь-який формат, який читає сайт. На файлі SRT або WebVTT перша половина роботи все одно виконується — діапазони оформлення йдуть, — а вимітання просто не знаходить нічого, бо блоків у фігурних дужках у цих форматах не буває. Файл без оформлення й без блоків у дужках повертається байт у байт, і це чесний результат прогону, якому нічого робити.

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