Hopp til hovedinnhold
SubtitleMatrix

JSON til TTML

Eller lim inn underteksttekst

Hva denne konverteringen endrer

1 ting slippes eller trenger en avgjørelse

  • Karaoke

    karaoketiming (utheving per stavelse)

Denne listen kommer fra egenskapsmatrisen for disse to formatene, ikke fra den bestemte filen du lastet inn. En bestemt fil kan miste mer hvis den bruker egenskaper formatet tillater, men matrisen ikke modellerer.

Denne JSON-til-TTML-konverteringen tar en fil, eller tekst limt inn i boksen, og gir deg TTML-utdataen uten å sende noe videre.

Konverteringen fra JSON til TTML mister noe, og det er verd å vite hva: karaoketimingen per stavelse forsvinner.

Listen over filboksen er regnet ut fra hva JSON og TTML kan uttrykke, ikke fra filen din, så svaret er det samme før du laster opp noe.

En enkelt JSON-fil går like fint som hundre, så du kan sende hele sesongen gjennom TTML-konverteringen og laste ned alt som én ZIP.

Arbeidet med JSON til TTML skjer i nettleseren din — ingen server ser filen.

Eksempler

En typisk JSON-fil konvertert til TTML

Inndata

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

Dette går tapt i utdataen: karaoke.

Samme JSON-til-TTML-konvertering med vanskelig inndata

Inndata

[
    { "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>

Slik ser skader på ekte filer ut — blandede linjeskift, løse mellomrom, tomme felt. Sammenlign med det ryddelige eksempelet over for å se hva JSON-parseren tilgir.

Ofte stilte spørsmål

Hva går tapt når JSON blir TTML?

Dette: karaoketimingen per stavelse forsvinner. På kildesiden har JSON et JSON-skjema med tider i millisekunder og tagger per linje; på målsiden har TTML XML-elementer med stiler, plassering og millisekunder, og derfor kommer de nevnte tingene ikke med. Teksten og rekkefølgen kommer over.

Hvordan skrives tidsstemplene om fra JSON til TTML?

En tid i JSON ser slik ut: `"start": 4126` — heltall millisekunder. I TTML skrives den som `begin="00:00:04.126"` og `end="…"`. Begge formatene bruker samme oppløsning, så ingen avrunding skjer. Rekkefølgen er den samme, og ingen tekstblokk flyttes mer enn avrundingen tilsier.

Hva skjer med formateringen fra JSON i TTML?

Den kommer over: JSON og TTML har begge full formatering, så taggene skrives om uten at fet, kursiv eller farge forsvinner.

Hvordan ser en TTML-fil ut når den er laget fra JSON?

TTML er XML med `<tt>`, `<body>` og ett `<p>`-element per tekstblokk. Konverteringen fra JSON fyller den formen: hver tekstblokk blir én TTML-blokk, i samme rekkefølge, med JSON-ens tekst delt i de samme linjene.

Kan jeg konvertere TTML tilbake til JSON, og hva går tapt da?

Ja, og den veien har sin egen tap-liste: JSON har ingen plass til innholdet TTML oppbevarer utenfor tekstblokkene. Det er ikke den samme listen som JSON → TTML, fordi de to formatene beholder ulike ting.

Beholder TTML plasseringen som JSON beskriver?

Ja, i den formen TTML har: TTML kan plassere tekstblokker, så JSON-ens posisjon skrives om dit i stedet for å kastes.

Hva gjør TTML med en tekstblokk fra JSON som har flere linjer?

Den beholder linjene. JSON og TTML uttrykker begge flere linjer per tekstblokk, og konverteringen skriver linjeskiftet med `<br/>` mellom linjene i samme `<p>` i stedet for å slå sammen teksten.

Relaterte verktøy