Hopp til hovedinnhold
SubtitleMatrix

ASS til TTML

FormatkonverteringAdvanced SubStation Alpha (ASS)
Eller lim inn underteksttekst

Hva denne konverteringen endrer

2 ting slippes eller trenger en avgjørelse

  • Karaoke

    karaoketiming (utheving per stavelse)

  • 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.

Her konverteres en ASS-fil til TTML i nettleseren: du slipper inn en fil — eller limer inn teksten — og får TTML-utdataen tilbake.

Konverteringen fra ASS til TTML mister noe, og det er verd å vite hva: karaoketimingen per stavelse forsvinner; TTML har ingen plass til innholdet ASS oppbevarer utenfor tekstblokkene.

Listen over filboksen er regnet ut fra hva ASS og TTML kan uttrykke, ikke fra filen din, så svaret er det samme før du laster opp noe.

En enkelt ASS-fil går like fint som hundre, så du kan sende hele sesongen gjennom TTML-konverteringen og laste ned alt som én ZIP.

Arbeidet med ASS til TTML skjer i nettleseren din — ingen server ser filen.

Eksempler

En typisk ASS-fil konvertert til TTML

Inndata

[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0

[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
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,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:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left

Resultat

<?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:05.000" end="00:00:08.500"><span tts:fontStyle="italic">Italic</span> and <span tts:fontWeight="bold">bold</span> text.</p>
<p begin="00:00:09.000" end="00:00:12.000">Positioned</p>
<p begin="00:00:13.000" end="00:00:16.000">karaoke</p>
<p begin="00:00:17.000" end="00:00:20.000">Line one<br/>Line two</p>
<p begin="00:00:21.000" end="00:00:24.000">Top left</p>  </body>
</tt>

Dette går tapt i utdataen: karaoke og metadata.

Samme ASS-til-TTML-konvertering med vanskelig inndata

Inndata

[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
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,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecode

Resultat

<?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, world</p>
<p begin="00:00:05.000" end="00:00:08.000">{\fad(300,300)}Unmodelled override</p>
<p begin="00:00:09.000" end="00:00:12.000">Both, wrong order</p>
<p begin="00:00:13.000" end="00:00:16.500">One decimal centisecond</p>
<p begin="00:00:17.000" end="00:00:20.000">Soft<br/>break</p>  </body>
</tt>

Slik ser skader på ekte filer ut — blandede linjeskift, løse mellomrom, tomme felt. Sammenlign med det ryddelige eksempelet over for å se hva ASS-parseren tilgir.

Ofte stilte spørsmål

Hva går tapt når ASS blir TTML?

Dette: karaoketimingen per stavelse forsvinner; TTML har ingen plass til innholdet ASS oppbevarer utenfor tekstblokkene. På kildesiden har ASS en full stiltabell, plassering, karaoke og hundredelers tider; på målsiden har TTML XML-elementer med stiler, plassering og millisekunder, og derfor kommer de nevnte tingene ikke med. Teksten og rekkefølgen kommer over.

Hvordan skrives tidsstemplene om fra ASS til TTML?

En tid i ASS ser slik ut: `0:00:04.13` — hundredeler. I TTML skrives den som `begin="00:00:04.126"` og `end="…"`. TTML har finere oppløsning enn ASS, så verdiene går rett inn uten avrunding. Rekkefølgen er den samme, og ingen tekstblokk flyttes mer enn avrundingen tilsier.

Hva skjer med formateringen fra ASS i TTML?

Den kommer over: ASS og TTML har begge full formatering, så taggene skrives om uten at fet, kursiv eller farge forsvinner.

Hvordan ser en TTML-fil ut når den er laget fra ASS?

TTML er XML med `<tt>`, `<body>` og ett `<p>`-element per tekstblokk. Konverteringen fra ASS fyller den formen: hver tekstblokk blir én TTML-blokk, i samme rekkefølge, med ASS-ens tekst delt i de samme linjene.

Kan jeg konvertere TTML tilbake til ASS, og hva går tapt da?

Ja, og den veien har sin egen tap-liste: 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. Det er ikke den samme listen som ASS → TTML, fordi de to formatene beholder ulike ting.

Beholder TTML plasseringen som ASS beskriver?

Ja, i den formen TTML har: TTML kan plassere tekstblokker, så ASS-ens posisjon skrives om dit i stedet for å kastes.

Hva gjør TTML med en tekstblokk fra ASS som har flere linjer?

Den beholder linjene. ASS og TTML uttrykker begge flere linjer per tekstblokk, og konverteringen skriver linjeskiftet med `<br/>` mellom linjene i samme `<p>` i stedet for å slå sammen teksten.

Forsvinner karaoketimingen i ASS når jeg konverterer til TTML?

Ja. ASS kan lagre per stavelse når en linje skal lyse opp, men TTML har ingen slik instruksjon; ordene blir stående, men timingen per stavelse er borte.

Relaterte verktøy