Andare al contenuto principale
SubtitleMatrix

Convertire TTML in VTT

Oppure incollare il testo dei sottotitoli

Cosa cambia questa conversione

3 elementi vengono scartati o richiedono una decisione

  • Stile

    tutto lo stile tranne grassetto e corsivo (colore, contorno, ombra, margini)

  • Posizionamento

    il posizionamento sullo schermo (ogni blocco torna alla posizione predefinita)

  • Contenuto specifico del formato

    il contenuto che il formato di partenza tiene fuori dai suoi blocchi (blocchi non-cue, testo di intestazione, impostazioni per blocco, eventi commentati) — il formato di destinazione non ha un posto per esso

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.

VTT è il formato del web: l’intestazione `WEBVTT` in testa e poi i cue con i due tempi, letti da un elemento HTML `<track>`. Un documento TTML porta gli stessi due momenti in attributi `begin` ed `end` e li conta allo stesso modo, al millisecondo.

Gli orari passano senza arrotondamenti; non passa l’intestazione. Gli stili di `<styling>`, le regioni di `<layout>`, il `<metadata>` e i namespace non hanno un campo nel VTT, che ha un modello di stile proprio ma elementare. Si perdono formattazione, posizionamento e contenuti specifici del formato.

Un `<p>` con un corsivo interno perde il corsivo; un `<p>` su due righe resta un solo cue, con le due righe una sotto l’altra. La conversione avviene nel browser, senza caricare file, e più file insieme arrivano in un unico ZIP.

Esempi

Un file TTML tipico, convertito in VTT

Ingresso

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
  <head>
    <styling>
      <style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
    </styling>
    <layout>
      <region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
    </layout>
  </head>
  <body>
    <div>
      <p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
      <p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
    </div>
  </body>
</tt>

Uscita

WEBVTT

00:00:01.000 --> 00:00:03.500
Hello <i>there</i>.

00:00:03.500 --> 00:00:06.000
How are you?
Fine, thanks.

In questa conversione si perdono la formattazione, il posizionamento e i contenuti specifici del formato. Tutto il resto resta identico, riga per riga.

La stessa conversione su un input difficile

Ingresso

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    ttp:frameRate="25" xml:lang="en">
  <body>
    <div>
      <p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
      <p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
      <p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
      <p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom &amp; Jerry.</p>
    </div>
  </body>
</tt>

Uscita

WEBVTT

00:00:01.500 --> 00:00:03.500
Loaded from an offset and a duration.

00:00:04.000 --> 00:00:06.500
A coarser clock spelling.

00:00:07.000 --> 00:00:08.480
Frames, at 25fps.

00:00:09.000 --> 00:00:11.000
<font color="#FF0000">Half-open</font> and Tom &amp; Jerry.

Namespace spaiati, entità non dichiarate e paragrafi vuoti: il file è sporco ma legale, e il confronto con l’esempio ordinato mostra fin dove arriva la tolleranza del parser.

Domande frequenti

Che aspetto ha l’output quando TTML diventa VTT?

Ha l’aspetto del VTT: l’intestazione `WEBVTT` in testa e, sopra ogni cue, una riga identificativa opzionale che nessun lettore mostra. Ogni elemento `<p>` diventa un cue VTT, nello stesso ordine e con lo stesso testo.

I millisecondi del TTML arrivano intatti nel VTT?

Sì: entrambi i formati contano il millisecondo, quindi `00:00:04.126` diventa `00:00:04.126` senza spostamenti. È una delle poche cose che questa direzione non perde.

Che ne è dello stile TTML quando il file diventa VTT?

Niente: il colore di `tts:color`, il peso di `tts:fontWeight` e la famiglia di `tts:fontFamily` non vengono riportati. Il VTT ha un modello di stile proprio, elementare, e inventare un mapping sarebbe peggio che dichiarare la perdita.

Che ne è delle regioni `<layout>` quando il documento TTML diventa VTT?

Spariscono: `tts:origin` ed `tts:extent` e i riferimenti `region=` non hanno destinazione. Il VTT sa esprimere qualche forma di posizionamento, ma non quella del documento di partenza, quindi la posizione compare fra le perdite.

Come esce in VTT un paragrafo TTML su due righe?

Come due righe, una sotto l’altra. L’accoppiamento resta: le due righe appartengono ancora a un solo sottotitolo nell’output VTT, e il lettore le mostra insieme.

Che cosa si perde dell’intestazione TTML nella conversione in VTT?

Il `<metadata>`, la dichiarazione XML, i namespace e gli attributi che il VTT non prevede. Il rapporto li conta come contenuto specifico del formato invece di lasciarli sparire senza dirlo.

I cue mantengono l’ordine nell’output VTT?

Sì, e vengono ordinati per tempo di inizio lungo la strada: prima i più antichi, come si aspetta ogni formato di questo sito. Se il documento TTML elencava i paragrafi fuori sequenza, il VTT li rimette in ordine.

Posso riconvertire il VTT in TTML?

Sì, e ha un elenco suo: convertire VTT in TTML perde formattazione, posizionamento e contenuti specifici del formato. Quell’elenco è diverso da quello qui sopra perché i due formati conservano cose diverse.

L’output VTT conserva la codifica del documento TTML?

No: l’output è UTF-8, con fine riga Unix e senza BOM, qualunque codifica dichiarasse il documento TTML. Ciò che esce è sempre lo stesso VTT in UTF-8.

Strumenti correlati