Convertire TTML in SMI
Oppure incollare il testo dei sottotitoli
Cosa cambia questa conversione
2 elementi vengono scartati o richiedono una decisione
- Stile
tutto lo stile tranne grassetto e corsivo (colore, contorno, ombra, margini)
- 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.
SAMI sincronizza il testo con tag `<SYNC Start=…>` e tiene il testo in elementi `<P>`. Il documento TTML fa la stessa cosa con `<p begin end>`, e i due formati contano entrambi il tempo in millisecondi, quindi questa è una delle direzioni in cui gli orari passano senza arrotondamenti.
Il SAMI ha una sua idea di posizionamento, con gli attributi di allineamento che il formato prevede: per questo la posizione del TTML non compare fra le perdite. Non ha invece un posto per gli stili dichiarati in `<styling>` né per il `<metadata>`, la dichiarazione XML e i namespace dell’intestazione.
Si perdono formattazione e contenuti specifici del formato. Ogni cue diventa un tag `<SYNC>` con il testo in un `<P>`, seguito dal blocco `<P> ` che svuota lo schermo, e le due righe restano unite da un `<br>`. Più file si elaborano in coda nel browser e si scaricano in un unico ZIP.
Esempi
Un file TTML tipico, convertito in SMI
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
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello <i>there</i>.
<SYNC Start=3500>
<P>
<SYNC Start=3500>
<P>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P>
</BODY>
</SAMI>
In questa conversione si perdono la formattazione 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 & Jerry.</p>
</div>
</body>
</tt>
Uscita
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1500>
<P>Loaded from an offset and a duration.
<SYNC Start=3500>
<P>
<SYNC Start=4000>
<P>A coarser clock spelling.
<SYNC Start=6500>
<P>
<SYNC Start=7000>
<P>Frames, at 25fps.
<SYNC Start=8480>
<P>
<SYNC Start=9000>
<P><font color="#FF0000">Half-open</font> and Tom & Jerry.
<SYNC Start=11000>
<P>
</BODY>
</SAMI>
È il tipo di danno che i file reali hanno davvero: namespace fuori posto, entità non dichiarate, elementi vuoti. Confrontandolo con l’esempio ordinato qui sopra si vede che cosa il parser perdona.
Domande frequenti
Che aspetto ha l’output quando TTML diventa SMI?
Ha l’aspetto del SAMI: nessun numero di cue e nessun timecode in forma di riga. Ogni sottotitolo è un `<SYNC Start=…>` con il testo in un `<P>`, seguito da un `<P> ` che riporta lo schermo a vuoto.
La posizione TTML sopravvive nel SAMI?
Sì, e non compare fra le perdite: il SAMI ha attributi propri per collocare il testo, quindi la posizione ricavata da `tts:origin` ed `tts:extent` viene scritta in quella forma invece di essere scartata.
Che ne è dello stile TTML quando il file diventa SAMI?
Niente: il colore di `tts:color`, il peso di `tts:fontWeight` e la famiglia di `tts:fontFamily` non hanno un campo nella pagina SAMI generata. Il testo resta e la formattazione no.
I millisecondi del TTML arrivano intatti nel SAMI?
Sì: entrambi i formati contano il millisecondo, quindi `00:00:04.126` diventa `Start=4126` senza arrotondamenti e senza spostamenti.
Come esce in SAMI un paragrafo TTML su due righe?
Come due righe separate da `<br>`, il modo in cui SAMI scrive un a capo forzato. L’accoppiamento resta: le due righe appartengono ancora a un solo sottotitolo nell’output.
Che cosa si perde dell’intestazione TTML nella conversione in SAMI?
Il `<metadata>`, la dichiarazione XML, i namespace e gli attributi che il SAMI non prevede. Il rapporto li conta come contenuto specifico del formato invece di lasciarli sparire senza dirlo.
I cue mantengono l’ordine nell’output SAMI?
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 SAMI li rimette in ordine.
Che cosa si perde davvero convertendo TTML in SAMI?
La formattazione dichiarata in `<styling>` e la cornice del documento: `<metadata>`, dichiarazione XML e namespace. Testo, tempi e posizione sopravvivono, perché il SAMI ha un posto per ciascuno di loro.