Convertir VTT en JSON
Ou collez le texte d'un sous-titre
Ce que cette conversion change
1 élément perdu ou à décider
- 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 JSON. Le document produit décrit les mêmes sous-titres avec le schéma de ce site : un numéro de version, puis une entrée par bloc avec son identifiant, son début et sa fin en millisecondes entières, et ses lignes sous forme de textes avec leurs balises.
Presque tout ce que le WebVTT stocke tient dans cette forme, d'où une liste de pertes courte. Ce qui n'a pas de clé dans le JSON est ce qui vit en dehors des blocs : l'en-tête WEBVTT et son commentaire, les blocs NOTE, STYLE et REGION, et les réglages qui suivent un code temporel comme align:start. Ces éléments sont écartés, pas rangés dans un champ libre. Les identifiants de blocs font exception dans l'autre sens : le schéma possède un champ id, donc intro reste intro.
Une entrée abîmée passe sans erreur : en-tête absent, fins de ligne Windows, ligne parasite avant un code temporel ou BOM sont lus sans plainte. Un fichier ou une saison entière, avec un ZIP à la fin.
Exemples
Un fichier VTT typique, converti en JSON
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
{
"version": 1,
"cues": [
{
"id": "intro",
"start": 1000,
"end": 4000,
"lines": [
"Hello there."
]
},
{
"start": 4500,
"end": 8000,
"lines": [
{
"text": "Second line with italics.",
"tags": [
{
"kind": "italic",
"start": 17,
"end": 24
}
]
}
]
}
]
}
La seule perte annoncée est 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
{
"version": 1,
"cues": [
{
"start": 1000,
"end": 2000,
"lines": [
"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
À quoi ressemble le JSON produit à partir d'un VTT ?
À un numéro de version suivi d'un tableau de blocs. Chaque bloc a un id facultatif, un début et une fin en millisecondes entières, et un tableau de lignes où chaque ligne est une chaîne ou un objet avec son texte et ses balises en positions de début et de fin.
Pourquoi la liste des pertes est-elle si courte pour VTT vers JSON ?
Parce que le schéma a été conçu pour porter tout ce que le modèle de blocs du convertisseur sait conserver, soit presque tout le WebVTT. Le reste est le matériau que le WebVTT garde hors des blocs : en-tête, commentaire, NOTE, STYLE, REGION et réglages de bloc.
Les identifiants de blocs du VTT survivent-ils dans le JSON ?
Oui : le schéma possède un champ id, donc un identifiant libre comme intro ou sign-1 est recopié tel quel. Une conversion VTT vers SRT, elle, renumérote les blocs, car le compteur du SRT doit rester numérique.
Les temps changent-ils entre le VTT et le JSON ?
Non : les deux côtés travaillent en millisecondes entières, donc 00:00:01.234 devient 1234, puis revient à 00:00:01.234 sans arrondi ni décalage.
Où passent les blocs NOTE, STYLE et REGION d'un VTT dans le JSON ?
Ils sont perdus : ils vivent en dehors des blocs, et le schéma ne leur donne aucune clé. Les réglages align ou position suivent le même chemin ; les blocs eux-mêmes, texte et temps, sont conservés entiers.
Peut-on traiter une transcription confidentielle par cette page ?
Oui : l'analyse et l'écriture restent dans le navigateur, le fichier n'est jamais envoyé à un serveur. Cela compte d'autant plus ici que le JSON alimente souvent un script ou une chaîne de traitement interne.
Comment un bloc VTT de deux lignes est-il représenté dans le JSON ?
Par deux éléments dans le tableau lines du même bloc. Le début et la fin restent uniques au bloc, donc la paire garde sa synchronisation et son statut de sous-titre unique.