TTML naar SRT
Of plak ondertiteltekst
Wat deze conversie verandert
3 dingen vervallen of vragen om een beslissing
- Opmaak
alle opmaak (vet, cursief, kleur, contour, schaduw)
- 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 SRT. Elk p-element wordt een genummerd blok met twee tijdstippen en de tekst. De tijden blijven exact: TTML schrijft een moment als 00:00:04.126 en SRT als 00:00:04,126, allebei tot op de milliseconde.
Wat SRT niet kan dragen, is het document eromheen. De styling- en layout-tabellen in de head, de metadata en de style- en region-verwijzingen op elke p verdwijnen; SRT kent alleen cues. Opmaak die in de tekst zelf zit, zoals een cursieve span, wordt als tag in de tekst gezet.
Een blok van twee regels blijft twee regels in hetzelfde blok. De omzetting draait in je browser, zonder upload, en meerdere bestanden gaan in één ZIP naar buiten.
Voorbeelden
Een gewoon TTML-bestand, omgezet naar SRT
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
1
00:00:01,000 --> 00:00:03,500
Hello <i>there</i>.
2
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
1
00:00:01,500 --> 00:00:03,500
Loaded from an offset and a duration.
2
00:00:04,000 --> 00:00:06,500
A coarser clock spelling.
3
00:00:07,000 --> 00:00:08,480
Frames, at 25fps.
4
00:00:09,000 --> 00:00:11,000
<font color="#FF0000">Half-open</font> and Tom & Jerry.
Dit is het soort schade dat echte bestanden hebben: gemengde regeleinden, losse spaties, een p-element zonder eigen eindtijd. Vergelijk het met het nette voorbeeld hierboven.
Veelgestelde vragen
Blijven vet en cursief van TTML naar SRT bewaard?
De nadruk wel, de stijltabel niet. Opmaak die bij een stuk tekst hoort — vet, cursief, onderstreept, een kleur — wordt als tag in de SRT-tekst geschreven, want dat is het enige soort opmaak dat een formaat op cuniveau nog kan dragen. Wat verdwijnt, is alles wat het TTML-bestand globaal zei: lettertype, grootte, rand, schaduw en marges.
Wat gebeurt er met de plaats op het scherm van TTML naar SRT?
SRT 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 SRT?
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. SRT 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 SRT-uitvoer eruit als TTML daar naartoe gaat?
Als SRT: boven elk tijdstip staat een nummer, beginnend bij 1. Elk TTML-blok wordt één SRT-blok, in dezelfde volgorde en met dezelfde tekst.
Zijn de TTML-tijden exact in het SRT-bestand?
Ja, tot op de milliseconde — fijner kan geen van beide formaten. TTML schrijft een moment als 00:00:04.126 en SRT als 00:00:04,126; er wordt niets afgerond of verschoven, en een blok dat 2,9 seconden in beeld was, blijft dat.
Hoe komt een TTML-blok van twee regels in SRT terecht?
Als twee tekstregels onder elkaar, zonder scheidingsteken. Ze blijven bij hetzelfde TTML-blok horen en verschijnen dus samen op het scherm.
Blijft de volgorde van TTML-blokken in SRT gelijk?
Ja. De blokken komen op volgorde van hun starttijd te staan, het vroegste eerst; een invoer die niet op volgorde stond, wordt dus herschikt. Aan de tekst verandert dat niets.
Kan ik SRT weer naar TTML omzetten?
Ja, en die richting kost niets extra: een SRT-bestand bevat minder dan TTML kan vasthouden, dus er gaat onderweg niets meer af. Wat deze richting al kwijtraakte, blijft wel weg — opmaak, positionering en formaateigen inhoud zijn uit een SRT-bestand niet terug te bouwen, omdat er niets in staat wat ze waren.
Blijft de tekencodering van het TTML-bestand in SRT behouden?
Nee, de uitvoer is UTF-8 met Unix-regeleinden en zonder byteordemarkering, ongeacht de codering van het TTML-bestand. Een afwijkende codering wordt bij het inlezen omgezet; de SRT-uitvoer is altijd gelijk.