Gå til hovedindholdet
SubtitleMatrix

TTML til SMI

Eller indsæt underteksttekst

Hvad denne konvertering ændrer

2 ting frasorteres eller kræver en beslutning

  • Formatering

    al formatering undtagen fed og kursiv (farve, kontur, skygge, margener)

  • Formatspecifikt indhold

    indhold, som kildeformatet beholder uden for sine tekstblokke (blokke, der ikke er tekstblokke, headertekst, indstillinger pr. tekstblok, kommenterede hændelser) – målformatet har ingen plads til det

Denne liste kommer fra kapabilitetsmatricen for disse to formater, ikke fra den konkrete fil, du indlæste. En bestemt fil kan miste mere, hvis den bruger egenskaber, som formatet tillader, men matricen ikke modellerer.

Denne side konverterer en TTML (Timed Text)-fil til SAMI (SMI). TTML skriver 00:00:01.000, mens SMI skriver <SYNC Start=1000>; SAMI skriver tiden som millisekunder i Start-attributten.

Når TTML bliver SMI, følger dette ikke med: formateringen og formatets særindhold. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.

En fil eller en hel sæson: køen behandler filerne i rækkefølge, du kan afbryde undervejs, og resultaterne hentes samlet som én ZIP-fil. Hele konverteringen kører i browseren – filen forlader aldrig din computer.

Eksempler

En typisk TTML-fil konverteret til SMI

Input

<?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>

Resultat

<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>&nbsp;
<SYNC Start=3500>
<P>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P>&nbsp;
</BODY>
</SAMI>

Tidskoderne skrives om fra 00:00:01.000 til <SYNC Start=1000>; ordene og rækkefølgen er den samme. Sammenlign de to filer linje for linje.

Samme konvertering på en beskidt TTML-fil

Input

<?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>

Resultat

<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>&nbsp;
<SYNC Start=4000>
<P>A coarser clock spelling.
<SYNC Start=6500>
<P>&nbsp;
<SYNC Start=7000>
<P>Frames, at 25fps.
<SYNC Start=8480>
<P>&nbsp;
<SYNC Start=9000>
<P><font color="#FF0000">Half-open</font> and Tom &amp; Jerry.
<SYNC Start=11000>
<P>&nbsp;
</BODY>
</SAMI>

Sådan ser beskadigede filer ud i virkeligheden – blandede linjeskift, løse mellemrum og tomme felter. Sammenlign med det pæne eksempel ovenfor for at se, hvad TTML-læseren tilgiver, før filen skrives som SMI.

Ofte stillede spørgsmål

Hvordan skrives den samme tid i TTML og SMI?

TTML skriver 00:00:01.000, mens SMI skriver <SYNC Start=1000>; SAMI skriver tiden som millisekunder i Start-attributten.

Hvad går tabt, når TTML bliver SMI?

Når TTML bliver SMI, melder kapacitetstabellen: formateringen og formatets særindhold. Teksten og tidslinjen bevares. I målformatet skriver SAMI tiden som millisekunder i Start-attributten. Rapporten over filfeltet viser tabene, før du vælger en fil, og tæller dem per fil, når filen er læst.

Kan SMI rumme det, som TTML gemmer uden for tekstblokkene?

Nej. TTML gemmer prolog, <head>, style- og regiondefinitioner uden for tekstblokkene. SAMI gemmer <STYLE>, <TITLE> og <P>-attributter uden for tekstblokkene. Derfor rapporteres indholdet uden for tekstblokkene som tab, når TTML bliver SMI.

Hvordan håndteres en beskidt TTML-fil, før den bliver SMI?

Når TTML bliver SMI, læses kilden sådan: Frametal læses via ttp:frameRate og frameRateMultiplier; en <p> uden egen begyndelsestid arver ikke fra <div> og droppes med en note. Sådan skrives resultatet: Filen skrives som <SYNC>-blokke med en ryddeblok efter hver tekstblok.

Hvilke tidsformer læses, når TTML bliver SMI?

Når TTML bliver SMI, accepterer læseren klokketid, offsets som 1.5s og 250ms samt frame-tal og frame-offsets. Frame-formerne kræver ttp:frameRate og frameRateMultiplier. SAMI skriver tiden i millisekunder i <SYNC Start=…>.

Bliver min TTML-fil uploadet, når jeg laver SMI?

Nej. Både læsningen af TTML og skrivningen af SMI sker i browseren, så intet af teksten, tiderne eller tagsene sendes i en anmodning. Du kan lægge en hel sæson ind, afbryde undervejs og hente resultaterne som én ZIP-fil; når siden er indlæst, virker den også uden net.

Relaterede værktøjer