Hopp til hovedinnhold
SubtitleMatrix

TTML til JSON

Eller lim inn underteksttekst

Hva denne konverteringen endrer

1 ting slippes eller trenger en avgjørelse

  • Formatspesifikt innhold

    innhold som kildeformatet oppbevarer utenfor tekstblokkene (blokker utenom tekstblokkene, topptekst, innstillinger per tekstblokk, kommenterte hendelser) — målformatet har ingen plass til det

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 siden konverterer TTML til JSON: slipp inn en fil eller lim inn teksten, og du får JSON-versjonen tilbake med tekstblokkene fra TTML i behold.

Forskjellen mellom TTML og JSON er ikke kosmetisk: JSON har ingen plass til innholdet TTML oppbevarer utenfor tekstblokkene.

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

Du kan kjøre én TTML-fil eller en hel sesong til JSON i samme kjøring: filene behandles én om gangen, kjøringen kan avbrytes underveis, og alt kommer ned som én ZIP.

Konverteringen fra TTML til JSON skjer i nettleseren din, så ingenting lastes opp.

Eksempler

En typisk TTML-fil konvertert til JSON

Inndata

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
  <head>
    <styling>
      <style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
    </styling>
    <layout>
      <region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
    </layout>
  </head>
  <body>
    <div>
      <p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
      <p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
    </div>
  </body>
</tt>

Resultat

{
  "version": 1,
  "cues": [
    {
      "start": 1000,
      "end": 3500,
      "lines": [
        {
          "text": "Hello there.",
          "tags": [
            {
              "kind": "italic",
              "start": 6,
              "end": 11
            }
          ]
        }
      ]
    },
    {
      "start": 3500,
      "end": 6000,
      "lines": [
        "How are you?",
        "Fine, thanks."
      ]
    }
  ]
}

Dette går tapt i utdataen: metadata.

Samme TTML-til-JSON-konvertering med vanskelig inndata

Inndata

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    ttp:frameRate="25" xml:lang="en">
  <body>
    <div>
      <p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
      <p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
      <p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
      <p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom &amp; Jerry.</p>
    </div>
  </body>
</tt>

Resultat

{
  "version": 1,
  "cues": [
    {
      "start": 1500,
      "end": 3500,
      "lines": [
        "Loaded from an offset and a duration."
      ]
    },
    {
      "start": 4000,
      "end": 6500,
      "lines": [
        "A coarser clock spelling."
      ]
    },
    {
      "start": 7000,
      "end": 8480,
      "lines": [
        "Frames, at 25fps."
      ]
    },
    {
      "start": 9000,
      "end": 11000,
      "lines": [
        {
          "text": "Half-open and Tom &amp; Jerry.",
          "tags": [
            {
              "kind": "color",
              "start": 0,
              "end": 9,
              "value": "#FF0000"
            }
          ]
        }
      ]
    }
  ]
}

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

Ofte stilte spørsmål

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

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

Hvordan skrives tidsstemplene om fra TTML til JSON?

En tid i TTML ser slik ut: `begin="00:00:04.126"` og `end="…"`. I JSON skrives den som `"start": 4126` — heltall millisekunder. 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 TTML i JSON?

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

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

JSON er et objekt med `version` og en `cues`-tabell, der hver tekstblokk har `id`, `start`, `end` og `lines`. Konverteringen fra TTML fyller den formen: hver tekstblokk blir én JSON-blokk, i samme rekkefølge, med TTML-ens tekst delt i de samme linjene.

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

Ja, og den veien har sin egen tap-liste: karaoketimingen per stavelse forsvinner. Det er ikke den samme listen som TTML → JSON, fordi de to formatene beholder ulike ting.

Beholder JSON plasseringen som TTML beskriver?

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

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

Den beholder linjene. TTML og JSON uttrykker begge flere linjer per tekstblokk, og konverteringen skriver linjeskiftet som flere elementer i `lines` i stedet for å slå sammen teksten.

Relaterte verktøy