Naar de hoofdinhoud
SubtitleMatrix

VTT naar ASS

FormaatconversieWebVTT (VTT)
Of plak ondertiteltekst

Wat deze conversie verandert

2 dingen vervallen of vragen om een beslissing

  • Nauwkeurigheid

    tijdprecisie — de klok van de uitvoer is grover, dus elke tijdstempel wordt afgerond op de dichtstbijzijnde 10 ms

  • 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 herschrijft een WebVTT-bestand als een Advanced SubStation Alpha-script. Dat is geen andere spelling van hetzelfde bestand: ASS is een script met een kop, een stijltabel en Dialogue-regels, en de omzetter bouwt die opnieuw op. Elke VTT-cue wordt één Dialogue-regel die naar een gegenereerde stijl met de naam Default wijst — Arial, grootte 20, wit met een donkere rand. Pas die ene rij in de kop aan en het hele script verandert mee.

Twee dingen gaan onderweg verloren. ASS bewaart tijd in honderdsten van een seconde, dus 00:00:04.500 wordt 0:00:04.50 en een cue kan hooguit 5 ms verschuiven — onzichtbaar bij het kijken, merkbaar bij het frame voor frame vergelijken van twee bestanden. En de documentlaag van WebVTT heeft in ASS geen equivalent: de kop, de NOTE-, STYLE- en REGION-blokken en de instellingen align:start of position:10% vallen weg. De omzetter verzint geen positie; hij meldt wat er niet mee kan.

Inline-opmaak komt wel mee. Cursief en vet worden echte ASS-overridecodes, en een regeleinde binnen een cue wordt de ASS-regeleindecode, zodat twee regels twee regels blijven binnen één event. Eén bestand of een heel seizoen, en niets verlaat je machine.

Voorbeelden

Een typisch VTT-bestand, omgezet naar ASS

Invoer

WEBVTT

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

00:00:04.500 --> 00:00:08.000 align:start position:10%
Second line with <i>italics</i>.

Uitvoer

[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:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:04.50,0:00:08.00,Default,,0,0,0,,Second line with {\i1}italics{\i0}.

In deze uitvoer verloren: precisie en formaateigen inhoud. Al het andere komt regel voor regel overeen.

Dezelfde omzetting op een rommelige invoer

Invoer

a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.

Uitvoer

[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:02.00,Default,,0,0,0,,No header, two lines before the timecode.

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 worden mijn VTT-tijden bij de omzetting naar ASS afgerond?

ASS bewaart tijd in centiseconden, een honderdste van een seconde, terwijl WebVTT milliseconden bewaart. Een cue die op 00:00:01.234 begint, wordt 0:00:01.23, dus elke tijdstempel schuift hooguit 5 ms op. Bij het kijken zie je dat niet; bij het vergelijken met een ander bestand kan het tellen.

Waar komt de stijltabel in de ASS-uitvoer vandaan?

Die wordt voor je geschreven, omdat een ASS-bestand zonder stijltabel niet afspeelt. De uitvoer draagt één stijl met de naam Default — Arial op grootte 20, witte tekst met een zwarte rand — en elke Dialogue-regel wijst daarnaar. Wijzig hem daarna in je ondertiteleditor; deze omzetter opnieuw draaien zou je aanpassing overschrijven.

Wat gebeurt er in ASS met VTT-instellingen als align:start of position:10%?

Die vallen weg. ASS kan een cue wel precies plaatsen, maar doet dat met overridecodes in de tekst, zoals een anN-code voor een hoek of een pos-code voor een exact punt. De instellingen van WebVTT zijn een andere, beperktere woordenschat zonder één-op-één-vertaling, dus de omzetter verzint geen plaats en meldt het verlies.

Overleven de NOTE-, STYLE- en REGION-blokken van VTT de omzetting naar ASS?

Nee. Het zijn constructies die alleen WebVTT kent, zonder tegenhanger in ASS. Let vooral op STYLE: dat kan de lay-out van het hele document bevatten in plaats van een losse opmerking, en die styling moet je in ASS opnieuw opbouwen als je hem nodig hebt.

Kan ik een vertrouwelijk WebVTT-bestand hier omzetten?

Ja. Het bestand wordt in het browsertabblad gelezen en geschreven, dus een WebVTT-bestand onder NDA verlaat de machine niet: er is geen uploadstap en geen parse op een server. De uitvoer wordt lokaal opgeslagen en de pagina blijft werken met het netwerk uit.

Gerelateerde hulpmiddelen