Andare al contenuto principale
SubtitleMatrix

Convertire MicroDVD in JSON

Oppure incollare il testo dei sottotitoli

Opzioni

La frequenza dei fotogrammi in cui sono contati i tempi. Nelle pagine di formato è quella che serve a MicroDVD, perché memorizza i tempi come numeri di fotogramma. Nelle pagine della frequenza dei fotogrammi è la cadenza con cui è stato temporizzato il file — la versione per cui sono stati creati i sottotitoli — e il secondo riquadro della pagina accetta la frequenza del video con cui verranno usati. 23,976, 24, 25, 29,97, 30, 50, 59,94 e 60 sono quelle comuni. Sbagliarla sposta l’intera timeline, e nelle pagine della frequenza dei fotogrammi la sposta di un rapporto anziché di un importo fisso.

Cosa cambia questa conversione

1 elemento viene scartato o richiede una decisione

  • Frequenza dei fotogrammi

    la sorgente memorizza i tempi come numeri di fotogramma — ogni timestamp dipende dalla frequenza dei fotogrammi fornita

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.

Un file MicroDVD contiene fotogrammi; un JSON contiene numeri di millisecondi dentro oggetti cue. Questa pagina fa la conversione nel browser, senza caricare file e senza registrazione, e produce un array con `id`, `start`, `end` e `lines` per ogni cue.

Per leggere i fotogrammi serve la frequenza. Il campo in alto vince; se resta vuoto vale quella dichiarata nella prima riga del file, altrimenti 25 fps. Un 25 dichiarato dal file non garantisce che il video girasse a 25, perché molti strumenti dell’epoca presupponevano il PAL.

Si perde la frequenza dei fotogrammi: il JSON conserva i millisecondi, non il valore che li ha prodotti. La barra verticale del testo diventa una seconda voce nell’array `lines`. Più file si elaborano in coda e si scaricano in un unico ZIP.

Esempi

Un file MicroDVD tipico, convertito in JSON

Ingresso

{1}{1}25
{100}{150}The quick brown fox jumps over the lazy dog.
{200}{260}Faster than|the last one.

Uscita

{
  "version": 1,
  "fps": 25,
  "cues": [
    {
      "start": 4000,
      "end": 6000,
      "lines": [
        "The quick brown fox jumps over the lazy dog."
      ]
    },
    {
      "start": 8000,
      "end": 10400,
      "lines": [
        "Faster than",
        "the last one."
      ]
    }
  ]
}

In questa conversione si perde la frequenza dei fotogrammi. Tutto il resto resta identico, riga per riga.

La stessa conversione su un input difficile

Ingresso

{1}{1}23.976
{0100}{0150}Leading zeros in the frame numbers.
[INFORMATION]
{300}{340}An unrecognized line above was kept in place.
{400}{450}Trailing spaces are kept.   

Uscita

{
  "version": 1,
  "fps": 25,
  "cues": [
    {
      "start": 4000,
      "end": 6000,
      "lines": [
        "Leading zeros in the frame numbers."
      ]
    },
    {
      "start": 12000,
      "end": 13600,
      "lines": [
        "An unrecognized line above was kept in place."
      ]
    },
    {
      "start": 16000,
      "end": 18000,
      "lines": [
        "Trailing spaces are kept.   "
      ]
    }
  ]
}

Questo è un file reale, non un esempio pulito: BOM, fine riga di Windows e righe fuori ordine. Il confronto con l’esempio qui sopra dice che cosa viene corretto e che cosa viene solo segnalato.

Domande frequenti

Quale frequenza dei fotogrammi viene applicata leggendo MicroDVD per il JSON?

Il campo della pagina ha la precedenza; in sua assenza si usa la frequenza dichiarata nella prima riga del file e, se manca anche quella, 25 fps. Il valore scelto determina tutti i millisecondi del JSON, quindi va impostato sulla frequenza del video a cui i sottotitoli appartengono.

Che aspetto ha l’output quando MicroDVD diventa JSON?

Ha l’aspetto del JSON: un array di oggetti cue, ciascuno con `id`, `start` ed `end` propri. Ogni cue MicroDVD diventa un cue JSON, nello stesso ordine e con lo stesso testo.

Come esce in JSON un cue MicroDVD su due righe?

Come due voci nell’array `lines` del cue. L’accoppiamento resta: le due righe MicroDVD appartengono ancora a un solo sottotitolo nell’output JSON, e il lettore le mostra insieme.

I cue MicroDVD mantengono l’ordine nell’output JSON?

Sì, e lungo la strada vengono ordinati per tempo di inizio: prima i più antichi, come si aspetta ogni formato di questo sito. Se il file MicroDVD elencava i cue fuori sequenza, il JSON li rimette in ordine: cambia la struttura, non il contenuto.

Posso riconvertire il JSON in MicroDVD?

Sì, e ha un elenco suo: convertire JSON in MicroDVD perde formattazione, posizionamento, karaoke e frequenza dei fotogrammi. Quell’elenco è diverso da quello qui sopra perché i due formati conservano cose diverse.

L’output JSON conserva la codifica del file MicroDVD?

No: l’output è UTF-8, con fine riga Unix e senza BOM, qualunque codifica usasse il file MicroDVD. Un file in UTF-16 o in una codifica a byte singolo di Windows viene decodificato in ingresso, e il pannello lo segnala; ciò che esce è sempre lo stesso JSON in UTF-8.

Strumenti correlati