Gå til hovedindholdet
SubtitleMatrix

JSON til TTML

Eller indsæt underteksttekst

Hvad denne konvertering ændrer

1 ting frasorteres eller kræver en beslutning

  • Karaoke

    karaoke-timing (fremhævning pr. stavelse)

Denne liste kommer fra kapabilitetsmatricen for disse to formater, ikke fra den konkrete fil, du indlæste. En bestemt fil kan miste mere, hvis den bruger egenskaber, som formatet tillader, men matricen ikke modellerer.

Denne side konverterer en SubtitleMatrix JSON-fil til TTML (Timed Text). JSON skriver start: 1000, mens TTML skriver 00:00:01.000, og tiden kan skrives uden afrunding.

Når JSON bliver TTML, følger dette ikke med: karaoke-timingen. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.

En fil eller en hel sæson: køen behandler filerne i rækkefølge, du kan afbryde undervejs, og resultaterne hentes samlet som én ZIP-fil. Hele konverteringen kører i browseren – filen forlader aldrig din computer.

Eksempler

En typisk JSON-fil konverteret til TTML

Input

{
  "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"
    }
  ]
}

Resultat

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:00.000" end="00:00:02.000">Hello world.<br/>Second line.</p>
<p begin="00:00:02.500" end="00:00:04.000">Plain line.<br/><span tts:fontStyle="italic">Styled</span> line.</p>
<p begin="00:00:04.500" end="00:00:06.000">Roger: I am here.</p>  </body>
</tt>

Tidskoderne skrives om fra start: 1000 til 00:00:01.000; ordene og rækkefølgen er den samme. Sammenlign de to filer linje for linje.

Samme konvertering på en beskidt JSON-fil

Input

[
    { "start": 0, "end": 1000, "lines": ["First."] },
    { "start": 1000, "end": 2000, "text": "Second." },
    "not an object",
    { "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]

Resultat

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:00.000" end="00:00:01.000">First.</p>
<p begin="00:00:01.000" end="00:00:02.000">Second.</p>
<p begin="00:00:02.000" end="00:00:03.000">Third.</p>  </body>
</tt>

Sådan ser beskadigede filer ud i virkeligheden – blandede linjeskift, løse mellemrum og tomme felter. Sammenlign med det pæne eksempel ovenfor for at se, hvad JSON-læseren tilgiver, før filen skrives som TTML.

Ofte stillede spørgsmål

Hvordan skrives den samme tid i JSON og TTML?

JSON skriver start: 1000, mens TTML skriver 00:00:01.000, og tiden kan skrives uden afrunding.

Hvad går tabt, når JSON bliver TTML?

Når JSON bliver TTML, melder kapacitetstabellen: karaoke-timingen. Teksten og tidslinjen bevares. I målformatet skriver TTML begin og end som klokketid i hvert <p>-element. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.

Kan TTML rumme det, som JSON gemmer uden for tekstblokkene?

Ja. JSON har ingen private blokke, men ukendte nøgler bevares. Der er derfor intet privat indhold at miste. TTML gemmer prolog, <head>, style- og regiondefinitioner uden for tekstblokkene.

Hvordan håndteres en beskidt JSON-fil, før den bliver TTML?

Når JSON bliver TTML, læses kilden sådan: JSON accepterer både objektformen, arrayformen, subtitle.js-AST og tekstgenveje; output skrives med to mellemrum, LF og sorteret efter starttid. Sådan skrives resultatet: Filen skrives som XML med <p begin=… end=…>.

Hvordan skrives tiderne i TTML, når JSON bliver TTML?

Når JSON bliver TTML, skrives begin og end som klokketid, for eksempel 00:00:01.000. Ved læsning accepteres også offsets som 1.5s og frame-tal som 00:00:01:12, men det, vi skriver ud, er altid klokketid. JSON gemmer start og slut som hele millisekunder.

Bliver min JSON-fil uploadet, når jeg laver TTML?

Nej. Både læsningen af JSON og skrivningen af TTML sker i browseren, så intet af teksten, tiderne eller tagsene sendes i en anmodning. Du kan lægge en hel sæson ind, afbryde undervejs og hente resultaterne som én ZIP-fil; når siden er indlæst, virker den også uden net.

Relaterede værktøjer