Змінити колір субтитрів
Або вставте текст субтитрів
Параметри
Вибирайте колір, у який перетворюється весь файл. Наявні кольори в рядку замінюються, а не накладаються, тож один запуск лишає рівно один колір на рядок; жирний, курсив, підкреслення й караоке-таймінг не чіпаються. Записується лише #rrggbb — це єдиний запис, який усі дев’ять прийнятих форматів можуть передати точно. Не кожен плеєр малює колір у тексті, і в SRT немає стандарту для нього: файл міститиме колір, але чи він покажеться — вирішує плеєр.
Ця сторінка фарбує кожен рядок файлу субтитрів в один колір. Вона читає файл за вмістом, а не за розширенням, тому той самий прогін працює на дев’яти форматах, і кожен отримує колір у тій нотації, яку вже розуміє: <font color=#rrggbb> у SRT, WebVTT, SBV і SAMI, блок перевизначення в ASS і SSA, <span tts:color> у TTML, масив тегів у JSON і ту саму вбудовану розмітку всередині взятих у лапки комірок CSV.
Вибраний колір замінює те, що було, а не нашаровується зверху. Рядок, що прийшов частково зеленим, повертається цілком у новому кольорі — один діапазон на весь рядок замість <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 беруть <font color=#rrggbb>, ASS і SSA — перевизначення {\c&H…&}, закрите {\c}, TTML — <span tts:color=#rrggbb>, JSON записує колір як діапазон тегів над рядком, а CSV зберігає ту саму розмітку <font> усередині своєї взятої в лапки текстової комірки. Формати, яким нема куди подіти вбудований колір, ця сторінка взагалі не приймає — у файлі 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} стоять на тих самих місцях навколо тексту, а перевизначення кольору відкривається перед ними й закривається після.