Hopp til hovedinnhold
SubtitleMatrix

SSA til JSON

FormatkonverteringSubStation Alpha (SSA)
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.

Her konverteres en SSA-fil til JSON i nettleseren: du slipper inn en fil — eller limer inn teksten — og får JSON-utdataen tilbake.

Konverteringen fra SSA til JSON mister noe, og det er verd å vite hva: JSON har ingen plass til innholdet SSA oppbevarer utenfor tekstblokkene.

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

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

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

Eksempler

En typisk SSA-fil konvertert til JSON

Inndata

[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines

Resultat

{
  "version": 1,
  "title": "Example SSA",
  "styles": {
    "Default": {
      "name": "Default",
      "Name": "Default",
      "Fontname": "Arial",
      "Fontsize": "20",
      "PrimaryColour": "&H00FFFFFF",
      "SecondaryColour": "&H000000FF",
      "TertiaryColour": "&H00000000",
      "BackColour": "&H00000000",
      "Bold": "0",
      "Italic": "0",
      "BorderStyle": "1",
      "Outline": "2",
      "Shadow": "2",
      "Alignment": "2",
      "MarginL": "10",
      "MarginR": "10",
      "MarginV": "10",
      "AlphaLevel": "0",
      "Encoding": "1",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#ffffff",
      "bold": false,
      "italic": false
    }
  },
  "cues": [
    {
      "start": 1000,
      "end": 4000,
      "lines": [
        "Hello there."
      ],
      "style": "Default"
    },
    {
      "start": 5000,
      "end": 8000,
      "lines": [
        {
          "text": "Italic line.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 6
            }
          ]
        }
      ],
      "style": "Default"
    },
    {
      "start": 9000,
      "end": 12000,
      "lines": [
        "Two",
        "lines"
      ],
      "style": "Default"
    }
  ]
}

Dette går tapt i utdataen: metadata.

Samme SSA-til-JSON-konvertering med vanskelig inndata

Inndata

[Script Info]
Title: Dirty SSA
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.

Resultat

{
  "version": 1,
  "title": "Dirty SSA",
  "styles": {
    "Default": {
      "name": "Default",
      "Name": "Default",
      "Fontname": "Arial",
      "Fontsize": "20",
      "PrimaryColour": "&H00FFFFFF",
      "SecondaryColour": "&H000000FF",
      "TertiaryColour": "&H00000000",
      "BackColour": "&H00000000",
      "Bold": "0",
      "Italic": "0",
      "BorderStyle": "1",
      "Outline": "2",
      "Shadow": "2",
      "Alignment": "2",
      "MarginL": "10",
      "MarginR": "10",
      "MarginV": "10",
      "AlphaLevel": "0",
      "Encoding": "1",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#ffffff",
      "bold": false,
      "italic": false
    }
  },
  "cues": [
    {
      "start": 1000,
      "end": 4000,
      "lines": [
        {
          "text": "Bold and underlined.",
          "tags": [
            {
              "kind": "bold",
              "start": 0,
              "end": 4
            },
            {
              "kind": "underline",
              "start": 9,
              "end": 19
            }
          ]
        }
      ],
      "style": "Default"
    },
    {
      "start": 5000,
      "end": 8000,
      "lines": [
        "A soft",
        "break and a {\\p1}mystery{\\p0} code."
      ],
      "style": "Default"
    }
  ]
}

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

Ofte stilte spørsmål

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

Dette: JSON har ingen plass til innholdet SSA oppbevarer utenfor tekstblokkene. På kildesiden har SSA en full stiltabell, plassering, karaoke og hundredelers tider; 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 SSA til JSON?

En tid i SSA ser slik ut: `0:00:04.13` — hundredeler. I JSON skrives den som `"start": 4126` — heltall millisekunder. JSON har finere oppløsning enn SSA, så verdiene går rett inn uten avrunding. Rekkefølgen er den samme, og ingen tekstblokk flyttes mer enn avrundingen tilsier.

Hva skjer med formateringen fra SSA i JSON?

Den kommer over: SSA 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 SSA?

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

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

Ja, og den veien har sin egen tap-liste: den siste desimalen forsvinner, fordi klokken i SSA runder hvert tidsstempel til nærmeste 10 ms. Det er ikke den samme listen som SSA → JSON, fordi de to formatene beholder ulike ting.

Beholder JSON plasseringen som SSA beskriver?

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

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

Den beholder linjene. SSA 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