TTML til ASS
Eller lim inn underteksttekst
Hva denne konverteringen endrer
2 ting slippes eller trenger en avgjørelse
- Presisjon
tidspresisjon — resultatets klokke er grovere, så hvert tidsstempel rundes av til nærmeste 10 ms
- Formatspesifikt innhold
innhold som kildeformatet oppbevarer utenfor tekstblokkene (blokker utenom tekstblokkene, topptekst, innstillinger per tekstblokk, kommenterte hendelser) — målformatet har ingen plass til det
Denne listen kommer fra egenskapsmatrisen for disse to formatene, ikke fra den bestemte filen du lastet inn. En bestemt fil kan miste mer hvis den bruker egenskaper formatet tillater, men matrisen ikke modellerer.
Slipp inn en TTML-fil på denne siden, og du får den tilbake som ASS, med tidsstemplene skrevet om og teksten i behold.
Forskjellen mellom TTML og ASS er ikke kosmetisk: den siste desimalen forsvinner, fordi klokken i ASS runder hvert tidsstempel til nærmeste 10 ms; ASS har ingen plass til innholdet TTML oppbevarer utenfor tekstblokkene.
Listen over filboksen er regnet ut fra hva TTML og ASS kan uttrykke, ikke fra filen din, så svaret er det samme før du laster opp noe.
Du kan kjøre én TTML-fil eller en hel sesong til ASS i samme kjøring: filene behandles én om gangen, kjøringen kan avbrytes underveis, og alt kommer ned som én ZIP.
Konverteringen fra TTML til ASS skjer i nettleseren din, så ingenting lastes opp.
Eksempler
En typisk TTML-fil konvertert til ASS
Inndata
<?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
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Hello {\i1}there{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,How are you?\NFine, thanks.
Dette går tapt i utdataen: tidspresisjon og metadata.
Samme TTML-til-ASS-konvertering med vanskelig inndata
Inndata
<?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>
Resultat
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.50,0:00:03.50,Default,,0,0,0,,Loaded from an offset and a duration.
Dialogue: 0,0:00:04.00,0:00:06.50,Default,,0,0,0,,A coarser clock spelling.
Dialogue: 0,0:00:07.00,0:00:08.48,Default,,0,0,0,,Frames, at 25fps.
Dialogue: 0,0:00:09.00,0:00:11.00,Default,,0,0,0,,{\c&H000000FF&}Half-open{\c} and Tom & Jerry.
Slik ser skader på ekte filer ut — blandede linjeskift, løse mellomrom, tomme felt. Sammenlign med det ryddelige eksempelet over for å se hva TTML-parseren tilgir.
Ofte stilte spørsmål
Hva går tapt når TTML blir ASS?
Dette: den siste desimalen forsvinner, fordi klokken i ASS runder hvert tidsstempel til nærmeste 10 ms; ASS har ingen plass til innholdet TTML oppbevarer utenfor tekstblokkene. På kildesiden har TTML XML-elementer med stiler, plassering og millisekunder; på målsiden har ASS en full stiltabell, plassering, karaoke og hundredelers tider, og derfor kommer de nevnte tingene ikke med. Teksten og rekkefølgen kommer over.
Hvordan skrives tidsstemplene om fra TTML til ASS?
En tid i TTML ser slik ut: `begin="00:00:04.126"` og `end="…"`. I ASS skrives den som `0:00:04.13` — hundredeler. Klokken i ASS er grovere enn i TTML, så hvert tidsstempel rundes til nærmeste 10 ms. Rekkefølgen er den samme, og ingen tekstblokk flyttes mer enn avrundingen tilsier.
Hva skjer med formateringen fra TTML i ASS?
Den kommer over: TTML og ASS har begge full formatering, så taggene skrives om uten at fet, kursiv eller farge forsvinner.
Hvordan ser en ASS-fil ut når den er laget fra TTML?
ASS er `[Script Info]`, en stiltabell i `[V4+ Styles]` og `[Events]` med `Dialogue:`-linjer. Konverteringen fra TTML fyller den formen: hver tekstblokk blir én ASS-blokk, i samme rekkefølge, med TTML-ens tekst delt i de samme linjene.
Kan jeg konvertere ASS tilbake til TTML, og hva går tapt da?
Ja, og den veien har sin egen tap-liste: karaoketimingen per stavelse forsvinner; TTML har ingen plass til innholdet ASS oppbevarer utenfor tekstblokkene. Det er ikke den samme listen som TTML → ASS, fordi de to formatene beholder ulike ting.
Beholder ASS plasseringen som TTML beskriver?
Ja, i den formen ASS har: ASS kan plassere tekstblokker, så TTML-ens posisjon skrives om dit i stedet for å kastes.
Hva gjør ASS med en tekstblokk fra TTML som har flere linjer?
Den beholder linjene. TTML og ASS uttrykker begge flere linjer per tekstblokk, og konverteringen skriver linjeskiftet med `\N` mellom linjene i samme `Dialogue:`-linje i stedet for å slå sammen teksten.