VTT naar TTML
Of plak ondertiteltekst
Wat deze conversie verandert
1 ding vervalt of vraagt om een beslissing
- Formaatspecifieke inhoud
inhoud die het bronformaat buiten zijn blokken bewaart (blokken die geen ondertitel zijn, koptekst, instellingen per blok, uitgecommentarieerde gebeurtenissen) — het doelformaat heeft er geen plek voor
Deze lijst komt uit de capaciteitenmatrix voor deze twee formaten, niet uit het bestand dat je hebt geladen. Een specifiek bestand kan meer verliezen wanneer het kenmerken gebruikt die het formaat toestaat maar de matrix niet modelleert.
Deze pagina zet WebVTT om naar TTML, het XML-formaat achter veel uitzend- en streamingpijplijnen. De vorm is anders: een XML-declaratie, een tt-element met de TTML-namespaces, en daarin een body met per cue een p-element dat zijn begin en eind als attributen draagt. Elke VTT-cue wordt zo’n p, in dezelfde volgorde, met dezelfde tekst.
Tijden en tekst komen heel over. WebVTT schrijft een moment als 00:00:04.126 en TTML schrijft hetzelfde moment als 00:00:04.126 in de attributen; niets wordt afgerond of verschoven. Inline-opmaak wordt echte TTML: een stuk cursief wordt een span met een fontStyle-attribuut, een stuk vet een span met fontWeight, en een regeleinde binnen een cue wordt een br-element.
Wat niet meekan, is de documentlaag van WebVTT: de kop, de NOTE-, STYLE- en REGION-blokken en de instellingen align:start of position:10%. TTML heeft eigen middelen voor styling en regio’s, maar de omzetter verzint geen vertaling die er niet is. Het verliesoverzicht noemt het, en de omzetting draait in je browser.
Voorbeelden
Een typisch VTT-bestand, omgezet naar TTML
Invoer
WEBVTT
intro
00:00:01.000 --> 00:00:04.000
Hello there.
00:00:04.500 --> 00:00:08.000 align:start position:10%
Second line with <i>italics</i>.
Uitvoer
<?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>
<p begin="00:00:01.000" end="00:00:04.000">Hello there.</p>
<p begin="00:00:04.500" end="00:00:08.000">Second line with <span tts:fontStyle="italic">italics</span>.</p> </body>
</tt>
In deze uitvoer verloren: formaateigen inhoud. Al het andere komt regel voor regel overeen.
Dezelfde omzetting op een rommelige invoer
Invoer
a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.
Uitvoer
<?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>
<p begin="00:00:01.000" end="00:00:02.000">No header, two lines before the timecode.</p> </body>
</tt>
Zo zien echte bestanden eruit — gemengde regeleinden, losse spaties, lege velden. Vergelijk met het nette voorbeeld hierboven om te zien wat de parser vergeeft.
Veelgestelde vragen
Wat gebeurt er met de NOTE-, STYLE- en REGION-blokken van VTT in TTML?
Die vallen weg. TTML kent wel eigen styling- en regio-middelen, maar de blokken van WebVTT hebben geen één-op-één-vertaling daarnaartoe, en de omzetter verzint er geen. De cues zelf komen heel over, met tekst en tijden; alleen de documentlaag van VTT verdwijnt.
Hoe ziet de TTML-uitvoer eruit als VTT wordt omgezet?
Als TTML: een XML-declaratie, een tt-element met de TTML-namespaces en daarin een body met één p-element per cue. Elk p draagt zijn begin en eind als attributen; er zijn geen cue-nummers en geen WEBVTT-kop zoals in VTT.
Zijn de VTT-tijden exact in het TTML-bestand?
Ja, tot op de milliseconde — fijner gaat geen van beide formaten. Zowel VTT als TTML schrijft een moment als 00:00:04.126, dus de tijdcodes komen teken voor teken uit zoals ze erin gingen.
Hoe komt een VTT-blok van twee regels in TTML terecht?
Als twee regels met een br-element ertussen, de manier waarop TTML een harde regeleinde schrijft. Het paar blijft bij elkaar: de twee VTT-regels horen in de TTML-uitvoer nog steeds bij één ondertitel.
Blijft de volgorde van VTT-blokken bewaard in TTML?
Ja, en ze worden onderweg op begintijd gesorteerd — vroegste eerst. Had je VTT-bestand een andere volgorde, dan zet de TTML-uitvoer de p-elementen terug in de juiste; dat is een structurele wijziging, geen inhoudelijke.
Kan ik de TTML daarna weer naar VTT omzetten?
Ja, en die richting heeft zijn eigen lijst: TTML naar VTT moet de styling- en regiosecties van TTML vertalen naar wat WebVTT kan uitdrukken, en een deel daarvan heeft geen tegenhanger. Deze kant op gaat alleen de documentlaag van VTT verloren.
Behoudt de TTML-uitvoer de tekencodering van het VTT-bestand?
Nee — de uitvoer is UTF-8, met Unix-regeleinden en zonder byte-order mark, wat het VTT-bestand ook gebruikte. Een bestand in UTF-16 of een Windows-eenbytecodering wordt bij het inlezen gedecodeerd; wat eruit komt is altijd dezelfde UTF-8-TTML.