TTML naar VTT
Of plak ondertiteltekst
Wat deze conversie verandert
3 dingen vervallen of vragen om een beslissing
- Opmaak
alle opmaak behalve vet en cursief (kleur, contour, schaduw, marges)
- Positionering
positionering op het scherm (elk blok keert terug naar de standaardpositie)
- 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 TTML om naar WebVTT, het formaat dat browsers voor ondertitels lezen. Elk p-element wordt een blok met een tijdregel en de tekst; de uitvoer begint met WEBVTT. Beide formaten schrijven tijd tot op de milliseconde, dus de tijdstippen blijven exact.
TTML bewaart zijn uiterlijk en plaatsing in de head, in een styling- en een layout-tabel. VTT neemt die tabellen niet over: opmaak die in de tekst zelf zit wordt als tag geschreven, en de rest van het uiterlijk komt van de CSS van de pagina die de ondertitels toont. De proloog en de metadata verdwijnen eveneens.
Een blok van twee regels blijft binnen hetzelfde blok. De omzetting draait volledig in je browser, zonder upload, en meerdere bestanden gaan in één ZIP naar buiten.
Voorbeelden
Een gewoon TTML-bestand, omgezet naar VTT
Invoer
<?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>
Uitvoer
WEBVTT
00:00:01.000 --> 00:00:03.500
Hello <i>there</i>.
00:00:03.500 --> 00:00:06.000
How are you?
Fine, thanks.
In deze uitvoer gaan opmaak, positionering en formaateigen inhoud verloren; de tijden en de tekst blijven gelijk.
Dezelfde omzetting op een weerbarstige invoer
Invoer
<?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>
Uitvoer
WEBVTT
00:00:01.500 --> 00:00:03.500
Loaded from an offset and a duration.
00:00:04.000 --> 00:00:06.500
A coarser clock spelling.
00:00:07.000 --> 00:00:08.480
Frames, at 25fps.
00:00:09.000 --> 00:00:11.000
<font color="#FF0000">Half-open</font> and Tom & Jerry.
Gemengde regeleinden, losse spaties en een p-element zonder eigen begin horen bij echte bestanden. Vergelijk dit met het nette voorbeeld hierboven.
Veelgestelde vragen
Welke opmaak blijft van TTML naar VTT bewaard?
De nadruk, als tags in de tekst: vet, cursief, onderstreept en een kleur worden geschreven als b-, i-, u- en font-tags, waar browsers iets mee doen. Wat een VTT-bestand niet kan dragen, is de stijltabel waar TTML op leunt — lettertype, grootte, rand, schaduw en marges gaan allemaal weg, en de pagina die de ondertitels toont, bepaalt die met eigen CSS.
Wat gebeurt er met de plaats op het scherm van TTML naar VTT?
VTT kan niet zeggen waar een ondertitel wordt getekend, dus de region- en style-verwijzingen op een p verdwijnen en elk blok valt terug op de standaardpositie die de speler kiest — bij de meeste spelers onderaan, gecentreerd.
Wat gebeurt er met de TTML-proloog, de styling- en layout-tabellen in VTT?
Die verdwijnen. TTML bewaart uiterlijk en plaatsing in de head: de XML-declaratie, de styling-tabel met benoemde stijlen, de layout-tabel met benoemde regio’s, metadata en de verwijzingen daarop. VTT kent cues, geen document, dus niets uit die head heeft een plek. Opmaak binnen een p-element wordt wel als tag in de tekst gezet.
Hoe ziet de VTT-uitvoer eruit als TTML daar naartoe gaat?
Het bestand begint met WEBVTT. Daarna volgt per TTML-blok een tijdregel met een pijl tussen start en eind, en de tekst; een identifier boven een blok is alleen voor de techniek en komt nooit in beeld.
Zijn de TTML-tijden exact in het VTT-bestand?
Ja, tot op de milliseconde — fijner kan geen van beide formaten. TTML en VTT schrijven een moment allebei als 00:00:04.126, dus de tijdstippen komen teken voor teken over zoals ze erin gingen.
Hoe komt een TTML-blok van twee regels in VTT terecht?
Als twee tekstregels onder elkaar binnen hetzelfde blok. De regels van het TTML-blok blijven bij elkaar en verschijnen samen in beeld.
Blijft de volgorde van TTML-blokken in VTT gelijk?
Ja, de blokken komen op starttijd te staan, vroegste eerst. Een TTML-bestand dat niet op volgorde stond, wordt hier rechtgezet; dat raakt de structuur, niet de inhoud.
Kan ik VTT weer naar TTML omzetten?
Ja, met een eigen lijst: VTT naar TTML verliest formaateigen inhoud. Die lijst is anders dan de lijst hierboven omdat de twee formaten andere constructies kennen.
Blijft de tekencodering van het TTML-bestand in VTT behouden?
Nee, de uitvoer is UTF-8 met Unix-regeleinden en zonder byteordemarkering, ongeacht wat het TTML-bestand gebruikte. Een afwijkende codering wordt bij het inlezen gedecodeerd; de VTT-uitvoer is altijd gelijk.