Gå til hovedindholdet
SubtitleMatrix

TTML-undertekstformat

Hvad dette format kan udtrykke

Tekstformatering
Skrifter, farve, kontur, skygge
Placering på skærmen
Ja
Karaoke-timing
Nej
Linjeskift inde i en tekstblok
Ja
Tidslinje
Start- og sluttid for hver tekstblok
Tidsopløsning
1 ms
Tider gemt som billednumre
Nej
Højre-til-venstre-tekst
Ja

Eksempler

En typisk TTML-fil, og hvad der læses ud af den

Fil

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

Hvad den indeholder

2 cues, 3 lines of text

  00:00:01.000 → 00:00:03.500
    Hello there.   [italic ×1]
    [region="bottom" style="s1"]
  00:00:03.500 → 00:00:06.000
    How are you?
    Fine, thanks.
    [region="bottom"]

Outside the cues:
  prolog     an XML declaration and the namespace bindings, kept as they came in
  styling    1 × <style> — "s1", the colour and weight a paragraph points at by name
  layout     1 × <region> — "bottom", the origin and extent a paragraph points at by name
  resolved   the head is kept as it was written and is not applied here — a paragraph's style="s1" region="bottom" stays an attribute, not a colour or a screen position

Højre side er ikke en konverteret fil – det er, hvad dette site læser ud af venstre side, og udgangspunktet for enhver konvertering af filen.

En beskidt TTML-fil, og hvad der stadig læses ud af den

Fil

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
    <div begin="00:00:01.000" end="00:00:05.000">
      <p>Inherits its timing from the div, which we do not resolve.</p>
      <p begin="00:00:06.000" end="00:00:07.000">This one has its own timing.</p>
    </div>
    <!-- <p begin="00:00:08.000" end="00:00:09.000">commented out</p> -->
    <div>
      <p begin="00:00:10.000"/>
      <p begin="00:00:11.000" end="00:00:12.000">Last one.</p>
    </div>
  </body>
</tt>

Hvad den indeholder

3 cues, 2 lines of text

  00:00:06.000 → 00:00:07.000
    This one has its own timing.
  00:00:10.000 → 00:00:12.000
    (no text)
  00:00:11.000 → 00:00:12.000
    Last one.

Outside the cues:
  prolog     an XML declaration and the namespace bindings, kept as they came in
  head       none — no <styling> and no <layout>, and no paragraph points at one either
  comments   the commented-out <p> stays a comment, in the place it was written
  divs       the timings on an enclosing <div> are not pushed down onto the paragraphs inside it

Reported while reading — repaired or skipped, never silently:
  1 × paragraphs with no readable begin time of their own (they were skipped — see the note about timing inherited from an enclosing div)
  1 × paragraphs with neither an end time nor a duration of their own (their end times were generated)

Virkelige filer kommer med BOM, Windows-linjeskift, en løs linje før tidskoden eller en tidskode, der slet ikke kan læses. Intet kaster en fejl: det, der ikke kan forstås, rapporteres i stedet for at forsvinde.

Konverter TTML (Timed Text) til et andet format

Hver af disse kører helt i din browser. Etiketterne siger, hvad den retning koster, før du åbner den.

Konvertering til dette format

TTML (Timed Text) er et af de tolv undertekstformater, som dette site håndterer. Denne side er opslagsværket for TTML: hvad formatet kan gemme, hvad det ikke kan, og en side for hvert format, du kan konvertere det til.

Tabellen ovenfor er den fulde liste for TTML – der findes ingen skjult funktionsliste. Når en række siger nej, er det præcis det, der går tabt ved at konvertere til TTML, og hver konverteringsside siger det, før du åbner en fil. En TTML-fil er XML med <tt>, <head>, <body>, <div> og <p>; hver <p> er en tekstblok.

Alle konverteringer fra TTML kører i browseren. Intet uploades, og der kræves ingen konto, når du konverterer TTML-filer, hvilket betyder noget for materiale under en fortrolighedsaftale, en patientjournal eller et udsendelsesstop.

Ofte stillede spørgsmål

Hvad er en TTML-fil?

TTML (Timed Text) er XML-formatet bag EBU-TT-D, IMSC og Netflix. En tekstblok er et <p>-element med begin og end, og styles og regions defineres i <head> og refereres fra <p>.

Hvilken formatering gemmer TTML?

TTML har fuld styling via tts:-attributter og <style>-definitioner i <head>. En <p> kan referere en style og en region, og begge følger med, når filen læses.

Kan TTML gemme placering og karaoke?

TTML placerer tekst via <region>-definitioner med tts:origin og tts:extent. Karaoke findes ikke, så karaoketags fra ASS eller JSON har ingen plads i TTML.

Hvilke formater kan TTML konverteres til uden tab?

Ingen ifølge kapacitetstabellen. Hver retning fra TTML taber mindst én ting – typisk tidslinjen, formateringen eller formatets særindhold. Hver konverteringsside navngiver sit eget tab.

Hvordan håndterer læseren en beskadiget TTML-fil?

Frametal læses via ttp:frameRate og frameRateMultiplier; en <p> uden egen begyndelsestid arver ikke fra <div> og droppes med en note. Det er den læsning, du får for TTML.

Hvilke tidsformer accepterer TTML?

Fire: klokketid som 00:00:01.000, offsets som 1.5s eller 250ms, frame-tal som 00:00:01:12 og frame-offsets som 36f. Frame-formerne kræver ttp:frameRate; det, der skrives ud, er altid klokketid. Det er reglerne for TTML.