Convertire JSON in SRT
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 legge un documento JSON che descrive sottotitoli e ne ricava un file SRT. Le forme accettate sono lo schema scritto da questo sito — un numero di versione e poi un array di blocchi — e la forma piana in cui il documento è semplicemente un elenco di blocchi. In entrambi i casi serve, per ogni blocco, un inizio, una fine e un po’ di testo; i tempi sono in millisecondi e finiscono dritti nei timecode SRT, che hanno la stessa risoluzione, quindi lungo la strada non si arrotonda niente.
Tutto ciò che il documento contiene e che SRT non sa tenere viene segnalato invece che scartato in silenzio: un titolo, una frequenza dei fotogrammi e una tabella di stili non hanno posto in un file di sottotitoli fatto solo di blocchi numerati. Dove un blocco usa una formattazione — corsivo, grassetto, un colore — viene scritta come il tag corrispondente, e ciò che il tag non sa esprimere è elencato qui sopra.
Un file danneggiato non ferma la conversione. Il parser legge quello che può e ripara un blocco la cui fine non viene dopo l’inizio, perché un file di sottotitoli che si riesce a caricare e correggere vale più di un messaggio di errore. Un intero insieme di file JSON si converte in un passaggio solo, nel browser, e torna indietro come ZIP.
Esempi
Un file JSON tipico, convertito in SRT
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
1
00:00:00,000 --> 00:00:02,000
Hello world.
Second line.
2
00:00:02,500 --> 00:00:04,000
Plain line.
<i>Styled</i> line.
3
00:00:04,500 --> 00: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
1
00:00:00,000 --> 00:00:01,000
First.
2
00:00:01,000 --> 00:00:02,000
Second.
3
00:00:02,000 --> 00: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
Quali forme di JSON vengono accettate?
Il documento scritto da questo sito — un numero di versione e un array di blocchi — e la forma equivalente ad array, in cui il file è soltanto l’elenco dei blocchi. Quello che conta è che ogni blocco abbia un inizio, una fine e un po’ di testo in una delle forme riconosciute.
Che fine fanno titolo, stili e frequenza dei fotogrammi del mio JSON?
Vengono letti e poi segnalati come persi, perché SRT non ha un campo dove metterli. Una frequenza dei fotogrammi in particolare non ha dove andare: SRT conserva l’orario, non i fotogrammi, quindi finisce nell’elenco qui sopra invece di essere usata in silenzio.
I millisecondi vengono arrotondati passando da JSON a SRT?
No. SRT conserva i millisecondi e il file JSON è scritto in millisecondi, quindi ogni inizio e ogni fine vengono trasferiti esatti e la linea temporale non deriva.
E se in un blocco JSON l’inizio viene dopo la fine, nel file SRT?
Il convertitore lo ripara invece di rifiutare il file, così un documento ritoccato a mano produce comunque un file di sottotitoli caricabile. Conviene controllare i tempi di quel blocco sul video, perché il file stava segnalando che qualcosa non tornava.
Posso convertire JSON e SRT avanti e indietro senza perdere nulla?
La conversione in JSON e il ritorno riproducono la linea temporale esatta e la formattazione che JSON sa descrivere: corsivo, grassetto e colori diventano tag e tornano come tag. Non sopravvive a un andata e ritorno ciò che SRT stesso non sa conservare, che è esattamente quello elencato qui sopra.