JSON til SMI
Eller indsæt underteksttekst
Hvad denne konvertering ændrer
2 ting frasorteres eller kræver en beslutning
- Formatering
al formatering undtagen fed og kursiv (farve, kontur, skygge, margener)
- Karaoke
karaoke-timing (fremhævning pr. stavelse)
Denne liste kommer fra kapabilitetsmatricen for disse to formater, ikke fra den konkrete fil, du indlæste. En bestemt fil kan miste mere, hvis den bruger egenskaber, som formatet tillader, men matricen ikke modellerer.
Denne side konverterer en SubtitleMatrix JSON-fil til SAMI (SMI). JSON skriver start: 1000, mens SMI skriver <SYNC Start=1000>; SAMI skriver tiden som millisekunder i Start-attributten.
Når JSON bliver SMI, følger dette ikke med: formateringen og karaoke-timingen. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.
En fil eller en hel sæson: køen behandler filerne i rækkefølge, du kan afbryde undervejs, og resultaterne hentes samlet som én ZIP-fil. Hele konverteringen kører i browseren – filen forlader aldrig din computer.
Eksempler
En typisk JSON-fil konverteret til SMI
Input
{
"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
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>Hello world.<br>Second line.
<SYNC Start=2000>
<P>
<SYNC Start=2500>
<P>Plain line.<br><i>Styled</i> line.
<SYNC Start=4000>
<P>
<SYNC Start=4500>
<P>Roger: I am here.
<SYNC Start=6000>
<P>
</BODY>
</SAMI>
Tidskoderne skrives om fra start: 1000 til <SYNC Start=1000>; ordene og rækkefølgen er den samme. Sammenlign de to filer linje for linje.
Samme konvertering på en beskidt JSON-fil
Input
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Resultat
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P>First.
<SYNC Start=1000>
<P>
<SYNC Start=1000>
<P>Second.
<SYNC Start=2000>
<P>
<SYNC Start=2000>
<P>Third.
<SYNC Start=3000>
<P>
</BODY>
</SAMI>
Sådan ser beskadigede filer ud i virkeligheden – blandede linjeskift, løse mellemrum og tomme felter. Sammenlign med det pæne eksempel ovenfor for at se, hvad JSON-læseren tilgiver, før filen skrives som SMI.
Ofte stillede spørgsmål
Hvordan skrives den samme tid i JSON og SMI?
JSON skriver start: 1000, mens SMI skriver <SYNC Start=1000>; SAMI skriver tiden som millisekunder i Start-attributten.
Hvad går tabt, når JSON bliver SMI?
Når JSON bliver SMI, melder kapacitetstabellen: formateringen og karaoke-timingen. Teksten og tidslinjen bevares. I målformatet skriver SAMI tiden som millisekunder i Start-attributten. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.
Kan SMI rumme det, som JSON gemmer uden for tekstblokkene?
Ja. JSON har ingen private blokke, men ukendte nøgler bevares. Der er derfor intet privat indhold at miste. SAMI gemmer <STYLE>, <TITLE> og <P>-attributter uden for tekstblokkene.
Hvordan håndteres en beskidt JSON-fil, før den bliver SMI?
Når JSON bliver SMI, læses kilden sådan: JSON accepterer både objektformen, arrayformen, subtitle.js-AST og tekstgenveje; output skrives med to mellemrum, LF og sorteret efter starttid. Sådan skrives resultatet: Filen skrives som <SYNC>-blokke med en ryddeblok efter hver tekstblok.
Hvordan bliver tekstblokkene til <SYNC>-blokke, når JSON bliver SMI?
Når JSON bliver SMI, skrives hver tekstblok som en <SYNC Start=…>-blok med sin tekst, og bagefter tilføjes en ryddeblok med . SAMI kender ingen sluttid i selve blokken; det er næste <SYNC>, der afslutter den. JSON gemmer både start og slut.
Bliver min JSON-fil uploadet, når jeg laver SMI?
Nej. Både læsningen af JSON og skrivningen af SMI sker i browseren, så intet af teksten, tiderne eller tagsene sendes i en anmodning. Du kan lægge en hel sæson ind, afbryde undervejs og hente resultaterne som én ZIP-fil; når siden er indlæst, virker den også uden net.