TTML til SSA
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.
Denne TTML-til-SSA-konverteringen tar en fil, eller tekst limt inn i boksen, og gir deg SSA-utdataen uten å sende noe videre.
Det er en reell forskjell på TTML og SSA: den siste desimalen forsvinner, fordi klokken i SSA runder hvert tidsstempel til nærmeste 10 ms; SSA har ingen plass til innholdet TTML oppbevarer utenfor tekstblokkene.
Listen over filboksen er regnet ut fra hva TTML og SSA kan uttrykke, ikke fra filen din, så svaret er det samme før du laster opp noe.
En hel sesong med TTML-filer går gjennom SSA-konverteringen i én kjøring: hver fil behandles for seg, du kan avbryte underveis, og resultatene lastes ned som én ZIP.
Fordi TTML-til-SSA-konverteringen kjører lokalt i nettleseren, forlater filen din aldri maskinen.
Eksempler
En typisk TTML-fil konvertert til SSA
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, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, 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-SSA-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, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, 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 SSA?
Dette: den siste desimalen forsvinner, fordi klokken i SSA runder hvert tidsstempel til nærmeste 10 ms; SSA har ingen plass til innholdet TTML oppbevarer utenfor tekstblokkene. På kildesiden har TTML XML-elementer med stiler, plassering og millisekunder; på målsiden har SSA 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 SSA?
En tid i TTML ser slik ut: `begin="00:00:04.126"` og `end="…"`. I SSA skrives den som `0:00:04.13` — hundredeler. Klokken i SSA 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 SSA?
Den kommer over: TTML og SSA har begge full formatering, så taggene skrives om uten at fet, kursiv eller farge forsvinner.
Hvordan ser en SSA-fil ut når den er laget fra TTML?
SSA er `[Script Info]`, en stiltabell i `[V4 Styles]` og `[Events]` med en `Marked`-kolonne. Konverteringen fra TTML fyller den formen: hver tekstblokk blir én SSA-blokk, i samme rekkefølge, med TTML-ens tekst delt i de samme linjene.
Kan jeg konvertere SSA 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 SSA oppbevarer utenfor tekstblokkene. Det er ikke den samme listen som TTML → SSA, fordi de to formatene beholder ulike ting.
Beholder SSA plasseringen som TTML beskriver?
Ja, i den formen SSA har: SSA kan plassere tekstblokker, så TTML-ens posisjon skrives om dit i stedet for å kastes.
Hva gjør SSA med en tekstblokk fra TTML som har flere linjer?
Den beholder linjene. TTML og SSA uttrykker begge flere linjer per tekstblokk, og konverteringen skriver linjeskiftet med `\N` mellom linjene i samme `Dialogue:`-linje i stedet for å slå sammen teksten.