Convertire JSON in SBV
Oppure incollare il testo dei sottotitoli
Cosa cambia questa conversione
3 elementi vengono scartati o richiedono una decisione
- Stile
tutto lo stile (grassetto, corsivo, colore, contorno, ombra)
- Posizionamento
il posizionamento sullo schermo (ogni blocco torna alla posizione predefinita)
- Karaoke
la temporizzazione karaoke (evidenziazione per sillaba)
Questo elenco deriva dalla matrice delle capacità di questi due formati, non dal particolare file caricato. Un file specifico può perdere di più se usa caratteristiche che il formato consente ma la matrice non modella.
Questa pagina converte un file JSON in SBV. Si trascina il file nel riquadro, oppure si incolla il testo, e si riprende indietro la versione SBV. La conversione avviene interamente nel browser: nessun file viene caricato e non serve un account.
I due formati non conservano le stesse cose, e la differenza non è cosmetica: stile, posizione e karaoke non hanno dove stare in SBV. L’elenco qui sopra nasce da ciò che ciascuno dei due formati sa esprimere, non dal file che si carica, quindi la risposta è la stessa prima ancora di aprire qualcosa.
Un file va bene, e così un’intera stagione: la coda li lavora in ordine e i risultati scendono insieme in un unico ZIP.
Esempi
Un file JSON tipico, convertito in SBV
Ingresso
{
"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"
}
]
}
Uscita
0:00:00.000,0:00:02.000
Hello world.
Second line.
0:00:02.500,0:00:04.000
Plain line.
<i>Styled</i> line.
0:00:04.500,0:00:06.000
Roger: I am here.
In questa conversione si perdono: stile, posizione e karaoke. Tutto il resto corrisponde riga per riga.
La stessa conversione su un input scomodo
Ingresso
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Uscita
0:00:00.000,0:00:01.000
First.
0:00:01.000,0:00:02.000
Second.
0:00:02.000,0:00:03.000
Third.
È il tipo di danno che hanno i file reali: fine riga misti, spazi vaganti, campi lasciati vuoti. Confronto con l’esempio ordinato qui sopra per vedere cosa il parser perdona.
Domande frequenti
Grassetto e corsivo sopravvivono dal JSON al SBV?
L’enfasi sì, la tabella degli stili no. La formattazione che appartiene a un pezzo di testo — grassetto, corsivo, sottolineato, un colore — viene scritta dentro il testo SBV come tag (`<i>`, `<b>`, `<u>`, `<font color="…">`), perché è l’unico tipo di stile che un formato per blocchi sa ancora portare. Si perde tutto quello che il file JSON diceva in generale: il carattere, la sua dimensione, il contorno, l’ombra e i margini.
Che fine fa la posizione sullo schermo passando da JSON a SBV?
SBV non sa dire dove viene disegnato un sottotitolo, quindi la posizione conservata con ogni blocco viene persa all’uscita dal JSON, e ogni blocco torna alla posizione predefinita scelta dal lettore: il fondo del fotogramma, centrato, per la maggior parte di essi.
Che fine fa il karaoke passando da JSON a SBV?
La temporizzazione se ne va, le parole restano. Il karaoke vive nelle campiture di karaoke che un blocco JSON porta con sé, che segnano quando ogni sillaba si accende, e SBV non ha modo di registrare un istante dentro una riga: i segni cadono e le sillabe arrivano come testo SBV normale.
Che aspetto ha il risultato quando JSON diventa SBV?
Come SBV: niente numeri di blocco e nessuna intestazione, una riga con i due orari e poi il testo. Ogni blocco JSON diventa un blocco SBV, nello stesso ordine, con lo stesso testo.
I tempi JSON sono esatti nel file SBV?
Sì, al millisecondo, che è la precisione massima di entrambi i formati. JSON scrive un istante come `4126` e SBV scrive lo stesso istante come `0:00:04.126`: fra i due non si arrotonda e non si sposta niente, e un blocco rimasto sullo schermo per 2,9 secondi lo resta.
Come esce in SBV un blocco JSON su due righe?
Come due righe, una sotto l’altra. L’abbinamento sopravvive: le due righe JSON restano un solo sottotitolo nel file SBV e il lettore le mostra insieme.
I blocchi JSON mantengono l’ordine nel file SBV?
Sì, e lungo la strada vengono ordinati per istante di inizio: prima il più anticipato, che è l’ordine atteso da ogni formato di questo sito e quello con cui i lettori li scorrono. Se il file JSON elencava i blocchi fuori sequenza, l’SBV li rimette in ordine: è un intervento sulla struttura del file, non sul contenuto, ed è voluto.
Posso riconvertire l’SBV in JSON?
Sì, e quella direzione non costa nulla: un file SBV contiene meno di quanto JSON sappia contenere, quindi al ritorno non si perde altro. Quello che questa direzione ha perso resta perso, però: stile, posizione e karaoke non si possono ricostruire da un file SBV, perché dentro non c’è nulla che li registri.
Il file SBV conserva la codifica del file JSON?
No: l’uscita è UTF-8, con fine riga Unix e senza BOM, qualunque codifica usasse il JSON. Un file che arriva in UTF-16 o in una codifica a byte singolo di Windows viene decodificato in ingresso (il pannello del risultato lo segnala quando accade); quello che esce è sempre lo stesso SBV in UTF-8.