Andare al contenuto principale
SubtitleMatrix

Convertire TTML 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)

  • 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.

SBV è il formato più essenziale del gruppo: una riga con inizio e fine separati da una virgola, poi il testo, senza numeri e senza intestazione. Un documento TTML porta gli stessi due momenti dentro gli attributi `begin` ed `end` di ogni `<p>`, ma li porta al millisecondo e con molto altro attorno.

Gli orari sopravvivono senza arrotondamenti, perché entrambi i formati contano il millisecondo. Non sopravvive l’intestazione: gli stili di `<styling>`, le regioni di `<layout>`, il `<metadata>` e i namespace non hanno un campo nell’SBV. Si perdono formattazione, posizionamento e contenuti specifici del formato.

Un `<p>` su due righe resta un solo cue, con le due righe una sotto l’altra, e l’ordine viene ristabilito per tempo di inizio. La conversione avviene nel browser, senza caricare file; più file insieme arrivano in un unico ZIP.

Esempi

Un file TTML tipico, convertito in SBV

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

0:00:01.000,0:00:03.500
Hello <i>there</i>.

0:00:03.500,0: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

0:00:01.500,0:00:03.500
Loaded from an offset and a duration.

0:00:04.000,0:00:06.500
A coarser clock spelling.

0:00:07.000,0:00:08.480
Frames, at 25fps.

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

Questo è un file reale, non un esempio pulito: prefissi di namespace diversi, fine riga di Windows e riferimenti a stili mancanti. Il confronto con l’esempio qui sopra dice che cosa viene corretto e che cosa viene solo segnalato.

Domande frequenti

Che aspetto ha l’output quando TTML diventa SBV?

Ha l’aspetto dell’SBV: nessun numero di cue e nessuna intestazione, solo una riga con i due tempi separati da una virgola e poi il testo. Ogni elemento `<p>` diventa un cue, nello stesso ordine e con lo stesso testo.

I millisecondi del TTML arrivano intatti nell’SBV?

Sì: il TTML scrive `00:00:04.126` e l’SBV riporta lo stesso istante, senza arrotondamenti. La precisione al millisecondo è una delle cose che questa direzione non perde.

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

Niente: il colore di `tts:color` e il peso di `tts:fontWeight` non hanno un campo nell’SBV. Il testo resta e la formattazione no, perché il formato di destinazione non sa esprimerla.

Che ne è delle regioni e della posizione del TTML quando il file diventa SBV?

Spariscono: l’SBV non ha un modo per dire dove deve stare un cue, quindi `tts:origin` ed `tts:extent` e i riferimenti `region=` non hanno destinazione.

Come esce in SBV 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 SBV, e il lettore le mostra insieme.

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

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

I cue mantengono l’ordine nell’output SBV?

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, l’SBV li rimette in ordine.

Posso riconvertire l’SBV in TTML?

Sì, e ha un elenco suo: convertire SBV 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 SBV 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 SBV in UTF-8.

Strumenti correlati