Aller au contenu principal
SubtitleMatrix

Convertir VTT en SSA

Ou collez le texte d'un sous-titre

Ce que cette conversion change

2 éléments perdus ou à décider

  • Précision

    la précision du minutage — l'horloge de la sortie est plus grossière, chaque code temporel est donc arrondi au 10 ms le plus proche

  • 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 WebVTT en SSA. Le fichier produit est un script : en-tête, table de styles dans [V4 Styles] et lignes Dialogue dans [Events]. Les blocs VTT deviennent des lignes Dialogue rattachées à un style, et les temps sont réécrits au centième de seconde.

Les deux formats ne stockent pas les mêmes choses : la précision milliseconde et les constructions propres au WebVTT n'ont pas de place dans un SSA. Chaque code temporel est arrondi aux 10 ms les plus proches, et l'en-tête, les blocs NOTE, STYLE et REGION et les réglages align ou position sont écartés.

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

Exemples

Un fichier VTT typique, converti en SSA

Entrée

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

Sortie

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, 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}.

Les pertes annoncées sont la précision et le contenu propre au VTT : le texte se compare ligne par ligne.

La même conversion sur une entrée mal formée

Entrée

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

Sortie

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, 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.

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

Pourquoi les codes temporels d'un VTT passent-ils au centième dans un SSA ?

Le SSA stocke le temps au centième de seconde, le WebVTT à la milliseconde : 00:00:04.126 devient 0:00:04.13, avec un déplacement maximal de 5 ms par borne. Rien n'est étiré ni réordonné pour autant.

Que deviennent les blocs NOTE, STYLE et REGION d'un VTT dans le SSA ?

Ils sont écartés : le SSA stocke des blocs, pas un document. L'en-tête, les commentaires, la feuille de style, les régions et les réglages align ou position n'ont aucun endroit où aller ; le texte et les temps des blocs passent entiers.

À quoi ressemble la sortie quand un VTT devient un SSA ?

À du SSA : pas de numéros de blocs, chaque sous-titre est une ligne Dialogue dans [Events], avec un champ Marked à la place du compteur. Chaque bloc VTT donne un bloc SSA, dans le même ordre.

Comment un bloc VTT de deux lignes sort-il en SSA ?

Deux lignes séparées par le code de saut de ligne du SSA, à l'intérieur d'une seule ligne Dialogue. La paire reste un seul sous-titre et garde son minutage.

Les blocs VTT gardent-ils leur ordre dans le SSA ?

Oui, triés par début croissant : les lignes Dialogue sont écrites dans l'ordre chronologique, quel que soit l'ordre du VTT d'origine.

Que perd le retour SSA vers VTT ?

Le retour a sa propre liste : le style, le positionnement, le karaoké et les constructions propres au script. Le WebVTT ne sait pas conserver une table de styles SSA ni un code de position, donc ces éléments ne reviennent pas.

Le SSA produit garde-t-il l'encodage du VTT source ?

Le script est écrit en UTF-8, avec des fins de ligne Unix et sans BOM, quel que soit l'encodage du VTT d'entrée. Un fichier UTF-16 est donc décodé puis réécrit, et non recopié octet pour octet.

Outils associés