Andare al contenuto principale
SubtitleMatrix

Convertire TTML in SSA

Oppure incollare il testo dei sottotitoli

Cosa cambia questa conversione

2 elementi vengono scartati o richiedono una decisione

  • Precisione

    la precisione della temporizzazione — l’orologio dell’uscita è più grossolano, quindi ogni timestamp è arrotondato al 10 ms più vicino

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

SSA e TTML hanno entrambi un modello ricco: l’uno con la sezione `[Events]` e le righe `Dialogue:`, l’altro con `<p>` annidati in un `<body>` e un’intestazione che dichiara stili e regioni. La conversione conserva quasi tutto, e per questo l’elenco delle perdite è corto.

Stili, posizioni e testo passano. Non passa la precisione: il TTML scrive `00:00:04.126`, l’SSA scrive `0:00:04.13`, quindi ogni tempo viene arrotondato ai centesimi di secondo e un cue può spostarsi di 5 ms. Non passa nemmeno la cornice XML con i suoi namespace e il `<metadata>`.

Si perdono precisione e contenuti specifici del formato. Un `<p>` con un corsivo interno conserva il corsivo, tradotto nella forma che l’SSA conosce, e un `<p>` su due righe diventa due righe separate da `\N`. Più file si elaborano in coda nel browser, senza caricare nulla.

Esempi

Un file TTML tipico, convertito in SSA

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

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Hello {\i1}there{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,How are you?\NFine, thanks.

In questa conversione si perdono la precisione 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

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.50,0:00:03.50,Default,,0,0,0,,Loaded from an offset and a duration.
Dialogue: 0,0:00:04.00,0:00:06.50,Default,,0,0,0,,A coarser clock spelling.
Dialogue: 0,0:00:07.00,0:00:08.48,Default,,0,0,0,,Frames, at 25fps.
Dialogue: 0,0:00:09.00,0:00:11.00,Default,,0,0,0,,{\c&H000000FF&}Half-open{\c} 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

Perché i timecode si sono spostati passando da TTML a SSA?

Il TTML arriva al millisecondo (`00:00:04.126`) e l’SSA scrive i centesimi (`0:00:04.13`), quindi ogni tempo viene arrotondato ai 10 ms più vicini: 4,126 secondi esce come 4,13. Nulla viene allungato o riordinato e nessun cue si muove di più di 5 ms.

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

Gli stili dichiarati in `<styling>` diventano stili SSA: colore, peso e famiglia del carattere trovano un campo nella sezione `[V4+ Styles]`, e ogni riga `Dialogue:` punta allo stile giusto.

Che ne è delle regioni di layout TTML quando il documento diventa SSA?

Le regioni definite in `<layout>` con `tts:origin` ed `tts:extent` diventano il posizionamento del cue SSA. Un `<p>` che punta a una regione esce con la posizione che quella regione descriveva.

Che aspetto ha l’output quando TTML diventa SSA?

Ha l’aspetto dell’SSA: nessun numero di cue, ogni sottotitolo è una riga `Dialogue:` nella sezione `[Events]`, con un campo `Marked` dove l’SRT tiene il numero, e sopra le sezioni `[Script Info]` e `[V4+ Styles]`.

Come esce in SSA un paragrafo TTML su due righe?

Come due righe separate da `\N`, il modo in cui l’SSA scrive un a capo forzato. L’accoppiamento resta: le due righe appartengono ancora a un solo sottotitolo nell’output SSA.

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

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

Posso riconvertire l’SSA in TTML?

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

Strumenti correlati