Перейти к основному содержимому
SubtitleMatrix

Удалить override-теги ASS

Текст и оформлениеУдаление разметки и тегов
Или вставьте текст субтитров

Параметры

Одно поле, семь вариантов, и у каждого варианта своя страница. Курсив, жирный, подчёркивание и цвет удаляют один вид диапазона и оставляют остальное оформление строки. «Всё оформление» удаляет все диапазоны, которые моделирует инструмент, — эти четыре плюс караоке, — не трогая остальной текст. «Всё оформление + угловая разметка» делает то же самое и затем вычищает угловые разметки, оставшиеся в тексте, потому что инструмент их не моделирует: теги говорящего VTT вроде <v Bob> и <c.className>. «Всё оформление + блоки {...}» делает то же для блоков переопределения, очищая коды {...}, не распознанные при разборе, например {\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}» остаётся после этой страницы?

Потому что инструмент не может представить его точно. Выравнивание вида «{\an8}» называет одну из девяти ячеек и кодирует горизонтальное и вертикальное положение одновременно, а собственное выравнивание инструмента знает только лево, центр и право. Сохранить половину и отбросить вторую — значит получить файл, который неправильно переживёт обратную запись, поэтому тег сохраняется целиком. Код позиции очищается, код выравнивания — нет.

Что такое блок переопределения «{...}» в ASS?

Это набор инструкций внутри текста строки, между фигурными скобками, который говорит плееру, что сделать со строкой: изменить оформление, анимировать, затушевать, переместить. Инструмент моделирует распространённое подмножество оформления и читает его в свою структуру, а остальное оставляет на месте: затухания, перемещения и размытие сохраняются дословно, потому что выбрасывать непонятную разметку — значит терять данные молча. Эта страница убирает и их.

Меняются ли тайминги и текст при удалении кодов переопределения?

Нет. Слова возвращаются байт в байт, каждый субтитр сохраняет начало и конец с точностью до миллисекунды, порядок остаётся файловым. Переносы строки внутри субтитра — часть самой реплики, а не оформления, поэтому остаются на месте. Меняются инструкции вокруг слов и, в некоторых случаях, положение строки на экране.

Будет ли файл корректно воспроизводиться после удаления кодов?

Да, и предсказуемее, чем раньше. Код, которого плеер не понимает, в лучшем случае игнорируется, в худшем разбирается неверно, а разные плееры расходятся как раз в трактовке эффектов. У простого текста с таймингами такой двусмысленности нет. Если файл опирался на позиционирование, чтобы поставить подпись над конкретным объектом в кадре, это позиционирование исчезло и строка встанет туда, куда её помещает стиль.

Удаляет ли страница именованные стили из таблицы «[V4+ Styles]»?

Нет, таблица стилей и стиль, на который ссылается каждый субтитр, остаются как были. Страница работает с кодами внутри текста строки, поэтому субтитр, чей именованный стиль жирный, останется жирным: жирность идёт от стиля, а не от текста строки. Очистка таблицы стилей — отдельная задача, и отдельной страницы для неё пока нет.

Можно ли применить страницу к SRT или только к ASS и SSA?

Можно перетащить любой формат, который читает сайт. В файле SRT или WebVTT первая половина работы всё равно выполняется — диапазоны оформления удаляются, — а сметание просто не находит ничего, потому что блоков в фигурных скобках в этих форматах не бывает. Файл без оформления и без блоков возвращается байт в байт.

Похожие инструменты