Gå till huvudinnehållet
SubtitleMatrix

Konvertera JSON till SSA

Eller klistra in undertexttext

Vad den här konverteringen ändrar

1 sak tappas eller kräver ett beslut

  • Precision

    tidsprecision – utdatans klocka är grövre, så varje tidsstämpel avrundas till närmaste 10 ms

Den här listan kommer från kapacitetsmatrisen för de här två formaten, inte från den specifika fil du laddade. En viss fil kan förlora mer om den använder funktioner som formatet tillåter men matrisen inte modellerar.

Den här sidan konverterar en JSON-fil till SSA. JSON skriver tiden som ett heltal millisekunder, till exempel "start": 4126. SSA skriver en tidpunkt som 0:00:04.13, alltså i hundradels sekunder. Ett JSON-textblock är ett objekt med start, end och text, samlade i en cues-lista. Ett SSA-textblock är en Dialogue-rad med Marked, start, slut, stil, marginaler och text. SSA räknar i hundradels sekunder, alltså grövre än JSON; varje tid avrundas till närmaste 10 ms, och felet blir högst 5 ms.

Det som inte följer med: tidsprecisionen. Målformatets klocka är grövre: varje tid avrundas till närmaste 10 ms, och felet blir högst 5 ms. SSA sparar hundradelar: 4126 ms skrivs som 0:00:04.13 och läses tillbaka som 4130 ms, medan 4124 ms blir 4120 ms. Varje tid kan alltså flyttas med högst 5 ms. Rapporten ovanför filrutan listar förlusterna innan du väljer en fil, och räknar dem per fil när filen är inläst.

En fil eller en hel säsong: kön bearbetar filerna i tur och ordning, du kan avbryta mitt i och resultaten laddas ner tillsammans som en ZIP. Hela konverteringen sker i webbläsaren – filen lämnar aldrig datorn.

Exempel

En typisk JSON-fil konverterad till SSA

Indata

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

[Script Info]
Title: Fixture: typical
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,,,,0,0,,,,,,,,,

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:02.00,Default,,0,0,0,,{\pos(100,200)}Hello world.\NSecond line.
Dialogue: 0,0:00:02.50,0:00:04.00,Default,,0,0,0,,Plain line.\N{\i1}Styled{\i0} line.
Dialogue: 0,0:00:04.50,0:00:06.00,Default,,0,0,0,,Roger: I am here.

Förlorat i utdatafilen: tidsprecisionen. Jämför de två sidorna rad för rad.

Samma konvertering på en stökig fil

Indata

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

Resultat

[Script Info]
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
Dialogue: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,First.
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,Second.
Dialogue: 0,0:00:02.00,0:00:03.00,Default,,0,0,0,,Third.

Så här ser skadade filer ut i verkligheten – blandade radbrytningar, lösa blanksteg och tomma fält. Jämför med det prydliga exemplet ovan för att se vad tolken förlåter.

Vanliga frågor

Hur skiljer sig tidskoderna i JSON och SSA?

JSON skriver tiden som ett heltal millisekunder, till exempel "start": 4126. SSA skriver en tidpunkt som 0:00:04.13, alltså i hundradels sekunder. SSA räknar i hundradels sekunder, alltså grövre än JSON; varje tid avrundas till närmaste 10 ms, och felet blir högst 5 ms.

Vad förloras när en JSON-fil blir SSA?

När JSON blir SSA går tidsprecisionen förlorade. Målformatets klocka är grövre: varje tid avrundas till närmaste 10 ms, och felet blir högst 5 ms. Texten, ordningen och tiderna följer med, men avrundade.

Klarar SSA av formatering och placering som JSON har?

JSON bevarar hela modellen: stilar, placering, karaoke och strukturerade taggar. JSON sparar positionen som x, y och en justering. JSON sparar karaoketider som strukturerade taggar. SSA har en stiltabell i [V4 Styles] med typsnitt, storlek, färger, kontur och marginaler, plus överstyrningskoder per textblock. SSA placerar text med \pos och \an, och behåller \an-parametern i textblockets extrafält. SSA sparar karaoketider per stavelse med \k-koder.

Vad händer med radbrytningar och antalet textblock när JSON konverteras till SSA?

JSON till SSA: Ett JSON-textblock är ett objekt med start, end och text, samlade i en cues-lista. JSON behåller hårda radbrytningar som en lista av rader. Ett SSA-textblock behåller hårda radbrytningar (\N och \n).

Laddas min JSON-fil upp när jag konverterar den till SSA?

Nej. Både inläsningen av JSON-filen och skrivningen av SSA-filen sker i webbläsaren; ingen del av texten, tiderna eller taggarna skickas i en förfrågan. Du kan lägga in en hel säsong, avbryta mitt i och ladda ner resultaten som en ZIP.

Relaterade verktyg