Naar de hoofdinhoud
SubtitleMatrix

ASS naar VTT

FormaatconversieAdvanced SubStation Alpha (ASS)
Of plak ondertiteltekst

Wat deze conversie verandert

4 dingen vervallen of vragen om een beslissing

  • Opmaak

    alle opmaak behalve vet en cursief (kleur, contour, schaduw, marges)

  • Positionering

    positionering op het scherm (elk blok keert terug naar de standaardpositie)

  • Karaoke

    karaoke-timing (markering per lettergreep)

  • 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 een ASS-script om naar WebVTT. ASS is het formaat dat ondertitelhuizen voor gestileerd werk gebruiken en draagt meer dan WebVTT kan houden, dus dit is een verliesrijke richting — het overzicht boven het bestandsvak is het lezen waard voordat je iets inzet. Vet en cursief overleven: de overridecodes voor vet en cursief worden de tags van WebVTT. De rest van de stijltabel niet: kleuren, randen, schaduwen, marges en de benoemde stijlen zelf vallen weg.

Plaatsing gaat dezelfde kant op. Een positiecode of een hoekcode heeft geen tegenhanger in een formaat waarvan de enige plaatsing een beperkte set cue-instellingen is. Karaoketiming kan ook niet blijven: de lettergrepen worden als afzonderlijke spans in de tekst bewaard, dus de woorden staan er nog, maar het oplichten dat ze één voor één liet verschijnen is weg.

Twee dingen om te weten. ASS-bestanden dragen vaak Fonts- en Graphics-secties met ingebedde lettertypen en afbeeldingen; dat zijn bijlagen voor een renderer, geen ondertitels, en WebVTT heeft zulke secties niet. En overridecodes die de omzetter niet kent — een fade-code bijvoorbeeld — blijven letterlijk in de tekst staan in plaats van half vertaald of stil weggegooid te worden. Zo verdwijnt er niets geruisloos. De omzetting draait in je browser, ook met het netwerk uit.

Voorbeelden

Een typisch ASS-bestand, omgezet naar VTT

Invoer

[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

Uitvoer

WEBVTT

00:00:01.000 --> 00:00:04.000
Hello there.

00:00:05.000 --> 00:00:08.500
<i>Italic</i> and <b>bold</b> text.

00:00:09.000 --> 00:00:12.000
Positioned

00:00:13.000 --> 00:00:16.000
<c>ka</c><c>ra</c><c>o</c><c>ke</c>

00:00:17.000 --> 00:00:20.000
Line one
Line two

00:00:21.000 --> 00:00:24.000
Top left

In deze uitvoer verloren: styling, positionering, karaoke en formaateigen inhoud. Al het andere komt regel voor regel overeen.

Dezelfde omzetting op een rommelige invoer

Invoer

[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

Uitvoer

WEBVTT

00:00:01.000 --> 00:00:04.000
Hello, world

00:00:05.000 --> 00:00:08.000
{\fad(300,300)}Unmodelled override

00:00:09.000 --> 00:00:12.000
Both, wrong order

00:00:13.000 --> 00:00:16.500
One decimal centisecond

00:00:17.000 --> 00:00:20.000
Soft
break

Zo zien echte bestanden eruit — gemengde regeleinden, losse spaties, lege velden. Vergelijk met het nette voorbeeld hierboven om te zien wat de parser vergeeft.

Veelgestelde vragen

Waarom is mijn karaoketiming verdwenen bij ASS naar VTT?

WebVTT kent geen timing per lettergreep. De lettergrepen worden als afzonderlijke spans in de tekst bewaard, dus een karaokeregel leest nog steeds in delen, maar de waarden die elk deel op zijn beurt lieten oplichten hebben nergens heen te gaan. Heb je het oplichten nodig, houd dan het ASS-bestand als master en gebruik de VTT als tekstversie.

Blijven vet en cursief bewaard van ASS naar VTT?

Ja. Het zijn de twee dingen die de inline-tagset van WebVTT kan uitdrukken, dus een cursief overridepaar wordt een cursieve tag en hetzelfde geldt voor vet. Alles wat rijker is — kleur, rand, schaduw, marges, lettertypenamen — valt weg.

Wat gebeurt er met gepositioneerde ondertitels in VTT?

Die verliezen hun plaatsing. De positie- en hoekcodes van ASS zijn specifiek voor dat formaat, en het equivalent in WebVTT is een beperkte set cue-instellingen in plaats van vrije coördinaten, dus de tekst verschijnt op de standaardpositie van de speler. De woorden zelf blijven onaangeroerd.

Waar zijn de Fonts- en Graphics-secties van mijn ASS-bestand gebleven?

Die gaan niet mee. Zulke secties bedden de lettertypen en afbeeldingen in die een speler nodig heeft om het script te tekenen, en het zijn bijlagen in plaats van ondertitels — WebVTT heeft geen overeenkomstige sectie. Een lettertype in een VTT onderbrengen kan niet, dus reken op een systeemlettertype of op styling in de speler.

Moet een ASS-script van een klant worden geüpload om het om te zetten?

Nee. Het script wordt in het browsertabblad gelezen en herschreven, dus niets ervan — de cues, het Script Info-blok, de stijltabel — wordt ergens naartoe gestuurd. Laad de pagina één keer, trek de netwerkkabel eruit, en de omzetting loopt door.

Gerelateerde hulpmiddelen