Gå till huvudinnehållet
SubtitleMatrix

Konvertera SMI till JSON

Eller klistra in undertexttext

Vad den här konverteringen ändrar

1 sak tappas eller kräver ett beslut

  • Formatspecifikt innehåll

    innehåll som källformatet behåller utanför sina textblock (block som inte är textblock, rubriktext, inställningar per textblock, utkommenterade händelser) – målformatet har ingen plats för det

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 SMI-fil till JSON. SAMI anger starttiden som ett millisekundstal i attributet, till exempel <SYNC Start=4126>. JSON skriver tiden som ett heltal millisekunder, till exempel "start": 4126. Ett SMI-textblock är en <SYNC Start=…>-rad följd av en <P>-rad; nästa <SYNC> tar över skärmen. Ett JSON-textblock är ett objekt med start, end och text, samlade i en cues-lista. Båda räknar i millisekunder, så ingen tid avrundas i konverteringen.

Det som inte följer med: formatdata. JSON har ingen egen privat del, så SMI:s <STYLE>- och <BODY>-delar följer inte med. JSON-modellen har title- och styles-nycklar, men konverteraren skriver dem bara när källan har något att fylla dem med; tomma fält utelämnas. 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 SMI-fil konverterad till JSON

Indata

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

Resultat

{
  "version": 1,
  "cues": [
    {
      "start": 1000,
      "end": 3000,
      "lines": [
        "Hello there."
      ]
    },
    {
      "start": 3500,
      "end": 6000,
      "lines": [
        "How are you?",
        "Fine, thanks."
      ]
    }
  ]
}

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

Samma konvertering på en stökig fil

Indata

<SAMI>
<HEAD>
<TITLE>Episode 1</TITLE>
<STYLE TYPE="text/css">
<!--
.ENCC { Name: English; }
-->
</STYLE>
</HEAD>
<BODY>
<sync start="00:00:02,500">
<P Class=ENCC>Line one<br>Line two
<sync start=9000>
<P Class=ENCC>Tom &amp; Jerry
<SYNC Start=12000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

Resultat

{
  "version": 1,
  "cues": [
    {
      "start": 2500,
      "end": 9000,
      "lines": [
        "Line one",
        "Line two"
      ]
    },
    {
      "start": 9000,
      "end": 12000,
      "lines": [
        "Tom &amp; Jerry"
      ]
    }
  ]
}

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 SMI och JSON?

SAMI anger starttiden som ett millisekundstal i attributet, till exempel <SYNC Start=4126>. JSON skriver tiden som ett heltal millisekunder, till exempel "start": 4126. Båda räknar i millisekunder, så ingen tid avrundas i konverteringen.

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

När SMI blir JSON går formatdata förlorade. JSON har ingen egen privat del, så SMI:s <STYLE>- och <BODY>-delar följer inte med. Texten, ordningen och tiderna följer med.

Klarar JSON av formatering och placering som SMI har?

SMI har en <STYLE>-del med CSS och <font>-taggar i texten; teckenstorlek, kontur och marginaler deklareras inte per textblock. SMI kan placera text via CSS-klasser och attribut på <P>-raderna. SMI har ingen karaoke. 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.

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

SMI till JSON: Ett SMI-textblock är en <SYNC Start=…>-rad följd av en <P>-rad; nästa <SYNC> tar över skärmen. Ett SMI-textblock behåller hårda radbrytningar (<br>). JSON behåller hårda radbrytningar som en lista av rader.

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

Nej. Både inläsningen av SMI-filen och skrivningen av JSON-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