Aller au contenu principal
SubtitleMatrix

Convertir ASS en SBV

Conversion de formatsAdvanced SubStation Alpha (ASS)
Ou collez le texte d'un sous-titre

Ce que cette conversion change

4 éléments perdus ou à décider

  • Style

    tout le style (gras, italique, couleur, contour, ombre)

  • 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 SBV, le format de sous-titres historique de YouTube. Le fichier produit n'a ni numéros de blocs ni en-tête : chaque sous-titre est une ligne avec deux codes temporels séparés par une virgule, puis le texte, puis une ligne vide.

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 SBV. Une emphase écrite dans le texte du Dialogue passe toutefois en balise, car le SBV conserve le balisage en ligne ; la table de styles, elle, est perdue.

Un fichier ou une saison entière, traité dans le navigateur, avec un seul ZIP à la fin.

Exemples

Un fichier ASS typique, converti en SBV

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

0:00:01.000,0:00:04.000
Hello there.

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

0:00:09.000,0:00:12.000
Positioned

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

0:00:17.000,0:00:20.000
Line one
Line two

0:00:21.000,0: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 timecode

Sortie

0:00:01.000,0:00:04.000
Hello, world

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

0:00:09.000,0:00:12.000
Both, wrong order

0:00:13.000,0:00:16.500
One decimal centisecond

0:00:17.000,0: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 SBV d'un script ASS ?

Les sous-titres Dialogue, avec leur début, leur fin et leur texte. Chaque bloc SBV porte les deux temps sur une ligne puis le texte, sans numéro ni en-tête ; tout ce qui vivait dans le script autour du texte est perdu.

Les codes de position d'un ASS passent-ils dans le SBV ?

Non : le SBV ne place pas un sous-titre et ne lit aucun code de surcharge. Un \pos(320,240) ou un \an7 est retiré, et le bloc est affiché là où la page ou le lecteur le décide.

Le karaoké \k et \kf d'un ASS survit-il dans le SBV ?

Non : les durées par syllabe n'ont pas de case dans un SBV. Le texte reste lisible, mais l'animation syllabique du script ne peut pas être reconstituée depuis la sortie.

Les balises de gras et d'italique d'un ASS restent-elles dans le SBV ?

Oui : l'emphase écrite dans le Dialogue est recopiée en balise dans le texte. Ce que la table de styles déclarait globalement — police, taille, couleurs, contour, ombre, marges — ne suit pas, car il ne vit pas dans le texte.

Comment un Dialogue de deux lignes sort-il en SBV ?

Sur deux lignes successives, sans symbole de séparation, car le SBV reconnaît un bloc à sa ligne de temps et à la ligne vide qui le suit. La paire garde donc un seul début et une seule fin.

Les temps au centième d'un ASS sont-ils exacts dans le SBV ?

Oui, à la milliseconde près : 0:00:04.13 devient 0:00:04.130. Le SBV écrit ses codes temporels à la milliseconde, donc la valeur gagne des zéros mais ne change pas.

Que deviennent [Script Info], Comment: et [Fonts] dans le SBV ?

Ils sont perdus : le SBV ne stocke que des sous-titres. L'en-tête, les événements Comment: et Picture:, la table de styles et les ressources embarquées n'ont aucun endroit où aller, et ne sont pas convertis en blocs.

Outils associés