Формат субтитрів JSON
Що може виразити цей формат
- Оформлення тексту
- Шрифти, колір, контур, тінь
- Позиціювання на екрані
- Так
- Караоке-таймінг
- Так
- Переноси рядків у репліці
- Так
- Таймлайн
- Початок і кінець для кожної репліки
- Роздільність часу
- 1 мс
- Час зберігається як номери кадрів
- Ні
- Текст справа наліво
- Так
Приклади
Типовий файл JSON, і що з нього читається
Файл
{
"version": 1,
"title": "Fixture: typical",
"fps": 25,
"styles": {
"Default": {
"name": "Default",
"fontFamily": "Arial",
"fontSize": 20,
"primaryColor": "#FFFFFF",
"bold": false,
"italic": false
}
},
"generator": "subtitlematrix fixtures",
"cues": [
{
"id": "1",
"start": 0,
"end": 2000,
"lines": [
"Hello world.",
"Second line."
],
"style": "Default",
"position": {
"x": 100,
"y": 200,
"align": "center"
}
},
{
"id": "2",
"start": 2500,
"end": 4000,
"lines": [
"Plain line.",
{
"text": "Styled line.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 6
}
]
}
]
},
{
"id": "3",
"start": 4500,
"end": 6000,
"lines": [
"Roger: I am here."
],
"speaker": "Roger"
}
]
}
Що він містить
3 cues, 5 lines of text
0 ms → 2000 ms
Hello world.
Second line.
[Default; position 100,200 (center)]
2500 ms → 4000 ms
Plain line.
Styled line. [italic ×1]
4500 ms → 6000 ms
Roger: I am here.
[speaker Roger]
Outside the cues:
styles Default
other keys version, title, fps, generator — carried through untouchedПрава колонка — не перетворений файл, а те, що сайт читає з лівої колонки й з чого починається будь-яке перетворення цього файлу.
Неохайний файл JSON, і що з нього все одно читається
Файл
{
"cues": [
{ "start": "0:00:01,5", "end": "0:00:03,0", "text": "Unpadded timecode." },
{ "start": 4000.5, "end": 5000, "lines": ["Fractional start.", { "text": "Second.", "tags": [] }] },
{ "start": 9000, "end": 8000, "lines": ["End before start."] },
{ "start": "nope", "end": 12000, "lines": ["No readable start."] },
{ "start": 13000, "lines": ["No end at all."] }
],
"generator": "subtitlematrix boundary",
"styles": {},
"title": "Fixture: boundary"
}
Що він містить
3 cues, 4 lines of text
1500 ms → 3000 ms
Unpadded timecode.
4001 ms → 5000 ms
Fractional start.
Second.
9000 ms → 9001 ms
End before start.
Outside the cues:
other keys generator, title — carried through untouched
Reported while reading — repaired or skipped, never silently:
2 × entries with no readable start and end time (they are not cues, so they were skipped)
1 × cue times that were not whole milliseconds (they were rounded to the nearest millisecond)
1 × cues whose end time was not after their start time (they were given a 1ms duration)Справжні файли приходять із BOM, переводами рядків Windows, зайвим рядком перед часом або часом, який взагалі не читається. Ніщо з цього не валить обробку: нерозпізнане потрапляє у звіт, а не зникає мовчки.
Конвертувати SubtitleMatrix JSON в інший формат
Кожен із них працює повністю у вашому браузері. Позначки кажуть, чого коштує цей напрямок, ще до того, як ви його відкриєте.
- Оформлення
- Позиціювання
- Караоке
- Таймінг
- Оформлення
- Позиціювання
- Караоке
- Точність
- Оформлення
- Позиціювання
- Караоке
- Частота кадрів
- Оформлення
- Позиціювання
- Караоке
- Оформлення
- Караоке
- Оформлення
- Позиціювання
- Караоке
- Таймінг
- Оформлення
- Позиціювання
- Караоке
- Переноси рядків
- Оформлення
- Позиціювання
- Караоке
Конвертація в цей формат
- SubRip (SRT) → SubtitleMatrix JSON
- WebVTT (VTT) → SubtitleMatrix JSON
- Advanced SubStation Alpha (ASS) → SubtitleMatrix JSON
- SubStation Alpha (SSA) → SubtitleMatrix JSON
- YouTube SBV → SubtitleMatrix JSON
- SAMI (SMI) → SubtitleMatrix JSON
- LRC Lyrics → SubtitleMatrix JSON
- MicroDVD → SubtitleMatrix JSON
- TTML (Timed Text) → SubtitleMatrix JSON
- Plain Text (TXT) → SubtitleMatrix JSON
- CSV Spreadsheet → SubtitleMatrix JSON
SubtitleMatrix JSON — один із дванадцяти форматів субтитрів, з якими працює цей сайт, і ця сторінка — його довідник: що формат уміє зберегти, чого не вміє і в який формат його переписати.
SubtitleMatrix JSON — структуроване подання тієї самої моделі: масив реплік із полями start та end у мілісекундах, стилі, позиції й караоке. Це найповніше подання з дванадцяти форматів.
Таблиця вище — це весь перелік можливостей, без прихованих рядків. Якщо рядок каже «ні», саме це й зникне під час конвертації з JSON, і кожна сторінка перетворення нижче попереджає про це до того, як ви відкриєте файл.
Усі ці перетворення виконуються у вашому браузері. Файли нікуди не надсилаються, обліковий запис не потрібен — це важливо для матеріалів під NDA, медичних записів і матеріалів до ефіру, які ще не вийшли.
Часті запитання
Що таке файл JSON?
SubtitleMatrix JSON — структуроване подання тієї самої моделі: масив реплік із полями start та end у мілісекундах, стилі, позиції й караоке. Це найповніше подання з дванадцяти форматів. Файли JSON читають власні скрипти й цей редактор.
Чи зберігає JSON оформлення?
У JSON — усе, що є в моделі: стилі, позиції, караоке й теги. Це стосується саме оформлення; позиціювання й караоке — окремі виміри, і кожен із них треба перевіряти окремо.
Чи має кожна репліка JSON і початок, і кінець?
Так, обидві межі записані явно: start: 1000, end: 3500. Це означає, що під час конвертації в інший формат тривалість не доведеться виводити з сусідніх реплік, і саме тому JSON добре підходить як джерело для перетворення.
У які формати JSON можна конвертувати без втрат?
Жоден: JSON не містить чогось такого, що інший формат зберіг би без доповнень. Кожен перехід додає або генерує час, або втрачає частину моделі, і кожна сторінка перетворення називає свою втрату окремо.
Чи можна відкрити JSON у текстовому редакторі?
Так, це звичайний текст. Найчастіша помилка під час ручного редагування — синтаксис часу: start: 1000, end: 3500. Одна зайва кома чи пробіл перетворює рядок на нерозпізнаний, і тоді репліка потрапляє у звіт про пропущені блоки.