Convertir ASS en VTT
Ou collez le texte d'un sous-titre
Ce que cette conversion change
4 éléments perdus ou à décider
- Style
tout le style sauf le gras et l'italique (couleur, contour, ombre, marges)
- Positionnement
le positionnement à l'écran (chaque bloc revient à la position par défaut)
- Karaoké
le minutage karaoké (surlignage par syllabe)
- Contenu propre au format
le contenu que le format source garde hors de ses blocs (blocs hors sous-titres, texte d'en-tête, réglages par bloc, événements commentés) — le format cible n'a nulle part où le mettre
Ce rapport de pertes vient de la matrice de capacités de ces deux formats, pas du fichier particulier que vous avez chargé. Un fichier précis peut perdre davantage s'il utilise des fonctionnalités que le format autorise mais que la matrice ne modélise pas.
Cette page convertit un ASS en WebVTT. Les blocs Dialogue deviennent des blocs VTT, avec des codes temporels à la milliseconde et un en-tête WEBVTT. Le texte, les coupures de ligne et l'ordre des sous-titres passent.
Les deux formats ne stockent pas les mêmes choses : le style, le positionnement, le karaoké et les constructions propres au script n'ont pas de place dans un VTT. Le gras et l'italique écrits dans le texte passent en balises, car le VTT accepte le balisage en ligne, mais la couleur, le contour, l'ombre, les marges et les styles nommés du script sont perdus. Les sections [Fonts] et [Graphics] ne sont pas reprises, et un code de surcharge que la conversion ne modélise pas, comme un fondu, reste tel quel dans le texte plutôt que d'être deviné.
Un fichier ou une saison entière, traité dans le navigateur, avec un seul ZIP à la fin.
Exemples
Un fichier ASS typique, converti en VTT
Entrée
[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
Sortie
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
Les pertes annoncées sont le style, le positionnement, le karaoké et les constructions propres au script : le texte se compare ligne par ligne.
La même conversion sur une entrée mal formée
Entrée
[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 timecodeSortie
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
C'est le genre de dégâts que portent les vrais fichiers : fins de ligne mélangées, espaces parasites, champs vides. Comparez avec l'exemple propre ci-dessus pour voir ce que l'analyseur pardonne.
Questions fréquentes
Que garde un VTT d'un script ASS ?
Le texte, les temps et l'ordre des Dialogue, plus les balises de gras et d'italique écrites dans le texte. Ce que le script déclarait dans sa table de styles, ses codes de position et son karaoké est perdu.
Les codes \pos et \an7 d'un ASS passent-ils dans le VTT ?
Non : ils sont retirés. Le VTT a ses propres réglages de position après le code temporel, mais la conversion n'en invente pas un à partir d'un code ASS, car une correspondance approximative placerait le texte au mauvais endroit.
Le karaoké \k et \kf d'un ASS survit-il dans le VTT ?
Non : les durées par syllabe n'ont pas d'équivalent dans la sortie. Le texte reste, mais l'animation syllabique du script ne peut pas être reconstituée depuis le fichier VTT.
Que deviennent les couleurs et le contour d'un ASS dans le VTT ?
Ils sont perdus : le VTT ne place pas de couleur de contour ni d'ombre dans une table de styles, et la conversion ne reporte pas la table [V4+ Styles]. Une couleur écrite dans le texte peut passer en balise font color, mais le style nommé ne suit pas.
Que deviennent [Script Info], [Fonts] et [Graphics] dans le VTT ?
Ils sont écartés : le VTT a son propre en-tête WEBVTT, et il ne reprend ni la table de styles, ni les ressources embarquées du script. Les événements Comment: et Picture: ne deviennent pas non plus des blocs.
Les temps au centième d'un ASS sont-ils exacts dans le VTT ?
Oui : 0:00:04.13 devient 00:00:04.130. Le VTT écrit à la milliseconde, donc la valeur gagne des zéros sans arrondi ni décalage.
Comment un Dialogue ASS de deux lignes sort-il en VTT ?
Sur deux lignes dans le même bloc. La paire garde un seul début et une seule fin, et reste donc un seul sous-titre, le VTT séparant les blocs par une ligne vide et non par la fin du texte.