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

Сменить цвет субтитров

Текст и оформлениеСмена цвета текста
Или вставьте текст субтитров

Параметры

#ffcc00

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

Эта страница красит каждую строку субтитров в один цвет: файл читается по содержимому, а не по расширению, и каждый из девяти форматов получает цвет в той записи, которую уже понимает, — <font color="#rrggbb"> в SRT, WebVTT, SBV, SAMI и CSV, блок переопределения в ASS и SSA, <span tts:color="#rrggbb"> в TTML и массив тегов в JSON. Выбранный цвет заменяет прежний, а не ложится поверх: строка, пришедшая частично зелёной, возвращается целиком в новом цвете — один диапазон на всю строку вместо <font> внутри <font>, который один плеер покажет внутренним цветом, а другой проигнорирует.

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

Примеры

Два обычных субтитра SRT

Вход

1
00:00:01,000 --> 00:00:02,000
Hello there.

2
00:00:03,000 --> 00:00:04,000
Second line.

Выход

1
00:00:01,000 --> 00:00:02,000
<font color="#ffcc00">Hello there.</font>

2
00:00:03,000 --> 00:00:04,000
<font color="#ffcc00">Second line.</font>

Один <font> на строку, обёрнутый вокруг всей строки, а таймкоды и пустые строки остаются точно такими, какими пришли. Тег — это диапазон по строке, а не свойство субтитра, поэтому реплика из двух жёстко перенесённых строк получает два тега, а не один через разрыв.

Строка, в которой уже есть цвет и курсив

Вход

1
00:00:01,000 --> 00:00:02,000
<i>Hello</i> <font color="#00ff00">there</font>.

Выход

1
00:00:01,000 --> 00:00:02,000
<font color="#ffcc00"><i>Hello</i> there.</font>

Зелёный диапазон удаляется до того, как накладывается новый цвет, поэтому получается один <font> вокруг строки с курсивом внутри, а не <font> внутри <font>, где правила вложенности зависят от плеера и результат тихо различается. То, что было зелёным, теперь того же цвета, что и всё остальное, — честное прочтение панели, которая просит один цвет.

Тот же субтитр в файле ASS

Вход

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize
Style: Default,Arial,20

[Events]
Format: Layer, Start, End, Style, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,Hello there

Выход

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize
Style: Default,Arial,20

[Events]
Format: Layer, Start, End, Style, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,{\c&H0000CCFF&}Hello there{\c}

В ASS нет <font>: цвет — это код переопределения, который открывается перед текстом и закрывается голым {\c} после него, чтобы остаток строки не окрасился случайно. PrimaryColour в таблице стилей не правится: переопределение на уровне субтитра сильнее и действует только на эту реплику.

Субтитр без текста

Вход

1
00:00:01,000 --> 00:00:02,000

2
00:00:03,000 --> 00:00:04,000
Hi.

Выход

1
00:00:01,000 --> 00:00:02,000

2
00:00:03,000 --> 00:00:04,000
<font color="#ffcc00">Hi.</font>

Пустой субтитр остаётся пустым, а не получает <font> вокруг ничего. Пустая реплика — уже структурная проблема, и её покажут страницы проверки; тег разметки без текста внутри её не исправит, а лишь спрячет от поиска. Субтитр, в котором есть текст, красится обычным образом.

Частые вопросы

В какие форматы страница изменения цвета пишет маркер и как он выглядит в каждом?

В девять: SRT, WebVTT, ASS, SSA, SBV, SAMI, TTML, JSON и CSV. SRT, WebVTT, SBV, SAMI и CSV получают <font color="#rrggbb">, ASS и SSA — переопределение {\c&HBBGGRR&}, закрываемое {\c}, TTML — <span tts:color="#rrggbb">, JSON записывает цвет как диапазон тега по строке. Форматы, в которые встроенный цвет записать некуда, страница не принимает вовсе: у LRC и MicroDVD нет синтаксиса цвета, и запуск там сообщил бы об изменении, не записав ничего.

Почему в выводе ASS стоит &H0000CCFF&, если я выбрал #ffcc00?

Потому что цвет ASS записывается в обратном порядке байтов: &HAABBGGRR, где сначала идёт альфа, затем синий, зелёный и красный. #ffcc00 — это красный 255, зелёный 204, синий 0, то есть альфа 00, синий 00, зелёный CC, красный FF — &H0000CCFF&. Значение остаётся выбранным вами цветом, и плеер покажет тот же жёлтый; цифры выглядят переставленными только потому, что формат хранит их задом наперёд.

Покажет ли новый цвет субтитров каждый видеоплеер?

Нет, и это честная граница страницы. <font color> не входит в спецификацию SRT: это разметка, которую большинство плееров терпит, а некоторые игнорируют; переопределения ASS понимают плееры на libass, такие как VLC и mpv, но не каждая аппаратная приставка. Страница корректно записывает маркер, и результат проверяется по самому файлу; показывать ли его — решение конкретного плеера. Если цвет обязан быть на экране, его нужно вжигать в изображение, а это другая задача.

Что происходит с уже существующими цветами в файле при смене цвета?

Они заменяются, а не наслаиваются. Сначала с каждой строки снимаются все цветовые диапазоны, затем добавляется один на всю строку, поэтому в результате один <font>, а не <font> внутри <font>. Вложенные цветовые теги — как раз случай, где плееры расходятся сильнее всего, поэтому у файла после этой страницы есть один однозначный ответ.

Страница меняет цвет отдельных слов или всего файла?

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

Сохраняются ли жирный, курсив, подчёркивание и караоке при наложении цвета?

Сохраняются, и их диапазоны остаются привязанными к тем же символам. Удаляются и добавляются заново только цветовые диапазоны; остальные четыре вида не тронуты, поэтому курсивное слово внутри строки остаётся курсивом внутри нового цвета. В ASS это значит, что {\i1} и закрывающий {\i0} стоят на прежних местах вокруг текста, а цветовое переопределение открывается до них и закрывается после.

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