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

Формат субтитрів 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 в інший формат

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

Конвертація в цей формат

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. Одна зайва кома чи пробіл перетворює рядок на нерозпізнаний, і тоді репліка потрапляє у звіт про пропущені блоки.