Gå till huvudinnehållet
SubtitleMatrix

Konvertera ASS till TTML

FormatkonverteringAdvanced SubStation Alpha (ASS)
Eller klistra in undertexttext

Vad den här konverteringen ändrar

2 saker tappas eller kräver ett beslut

  • Karaoke

    karaoketider (markering per stavelse)

  • Formatspecifikt innehåll

    innehåll som källformatet behåller utanför sina textblock (block som inte är textblock, rubriktext, inställningar per textblock, utkommenterade händelser) – målformatet har ingen plats för det

Den här listan kommer från kapacitetsmatrisen för de här två formaten, inte från den specifika fil du laddade. En viss fil kan förlora mer om den använder funktioner som formatet tillåter men matrisen inte modellerar.

Den här sidan konverterar en ASS-fil till TTML. ASS skriver en tidpunkt som 0:00:04.13, alltså i hundradels sekunder. TTML skriver tiden i begin- och end-attribut som 00:00:04.126, med millisekunder. Ett ASS-textblock är en Dialogue-rad med lager, start, slut, stil, marginaler och text. Ett TTML-textblock är ett <p>-element med begin och end inuti ett XML-dokument. ASS räknar i hundradels sekunder, medan TTML har finare upplösning och tar emot värdet utan ytterligare avrundning.

Det som inte följer med: karaoken och formatdata. Karaoketiderna, som styr markeringen per stavelse, försvinner. Innehåll utanför textblocken har ingen plats i målformatet. Placeringen tappas också i praktiken: ASS:s \pos- och \an-värden skrivs inte över till målformatet, även om kapacitetsmatrisen inte räknar det som en egen förlust. Rapporten ovanför filrutan listar förlusterna innan du väljer en fil, och räknar dem per fil när filen är inläst.

En fil eller en hel säsong: kön bearbetar filerna i tur och ordning, du kan avbryta mitt i och resultaten laddas ner tillsammans som en ZIP. Hela konverteringen sker i webbläsaren – filen lämnar aldrig datorn.

Exempel

En typisk ASS-fil konverterad till TTML

Indata

[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>

Förlorat i utdatafilen: karaoken och formatdata. Jämför de två sidorna rad för rad.

Samma konvertering på en stökig fil

Indata

[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>

Så här ser skadade filer ut i verkligheten – blandade radbrytningar, lösa blanksteg och tomma fält. Jämför med det prydliga exemplet ovan för att se vad tolken förlåter.

Vanliga frågor

Hur skiljer sig tidskoderna i ASS och TTML?

ASS skriver en tidpunkt som 0:00:04.13, alltså i hundradels sekunder. TTML skriver tiden i begin- och end-attribut som 00:00:04.126, med millisekunder. ASS räknar i hundradels sekunder, medan TTML har finare upplösning och tar emot värdet utan ytterligare avrundning.

Vad förloras när en ASS-fil blir TTML?

När ASS blir TTML går karaoken och formatdata förlorade. Karaoketiderna, som styr markeringen per stavelse, försvinner. Innehåll utanför textblocken har ingen plats i målformatet. Texten, ordningen och tiderna följer med.

Klarar TTML av formatering och placering som ASS har?

ASS har en stiltabell i [V4+ Styles] med typsnitt, storlek, färger, kontur och marginaler, plus överstyrningskoder per textblock. ASS placerar text med \pos och \an, och behåller \an-parametern i textblockets extrafält. ASS sparar karaoketider per stavelse med \k-koder. TTML har en <styling>-tabell med namngivna stilar och en <layout>-tabell med regioner i <head>. TTML placerar text via regioner som definieras i <head>. TTML sparar när ett textblock börjar och slutar, inte när en stavelse markeras.

Vad händer med radbrytningar och antalet textblock när ASS konverteras till TTML?

ASS till TTML: Ett ASS-textblock är en Dialogue-rad med lager, start, slut, stil, marginaler och text. Ett ASS-textblock behåller hårda radbrytningar (\N och \n). Ett TTML-textblock behåller hårda radbrytningar (<br/>).

Laddas min ASS-fil upp när jag konverterar den till TTML?

Nej. Både inläsningen av ASS-filen och skrivningen av TTML-filen sker i webbläsaren; ingen del av texten, tiderna eller taggarna skickas i en förfrågan. Du kan lägga in en hel säsong, avbryta mitt i och ladda ner resultaten som en ZIP.

Relaterade verktyg