Aller au contenu principal
SubtitleMatrix

Convertir JSON en VTT

Ou collez le texte d'un sous-titre

Ce que cette conversion change

3 é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)

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 document JSON en WebVTT. Elle écrit l’en-tête `WEBVTT`, puis un bloc par cue avec ses bornes `00:00:04.126 --> 00:00:06.000`. Les `start` et `end` en millisecondes passent directement : le VTT et le JSON ont la même résolution.

Le VTT accepte les balises de mot, pas la table `styles`, l’objet `position` ni les plages karaoké du JSON : ces trois dimensions figurent dans la liste ci-dessus. Celle-ci vient des capacités, pas de votre fichier, et elle est identique avant tout dépôt.

Un fichier isolé ou une saison : la file traite les fichiers dans l’ordre et les résultats descendent dans un ZIP. Le navigateur fait tout, sans envoi.

Exemples

Un fichier JSON typique, converti en VTT

Entrée

{
  "version": 1,
  "title": "Fixture: typical",
  "fps": 25,
  "styles": {
    "Default": {
      "name": "Default",
      "fontFamily": "Arial",
      "fontSize": 20,
      "primaryColor": "#FFFFFF",
      "bold": false,
      "italic": false
    }
  },
  "generator": "subtitlematrix fixtures",
  "cues": [
    {
      "id": "1",
      "start": 0,
      "end": 2000,
      "lines": [
        "Hello world.",
        "Second line."
      ],
      "style": "Default",
      "position": {
        "x": 100,
        "y": 200,
        "align": "center"
      }
    },
    {
      "id": "2",
      "start": 2500,
      "end": 4000,
      "lines": [
        "Plain line.",
        {
          "text": "Styled line.",
          "tags": [
            {
              "kind": "italic",
              "start": 0,
              "end": 6
            }
          ]
        }
      ]
    },
    {
      "id": "3",
      "start": 4500,
      "end": 6000,
      "lines": [
        "Roger: I am here."
      ],
      "speaker": "Roger"
    }
  ]
}

Sortie

WEBVTT

1
00:00:00.000 --> 00:00:02.000
Hello world.
Second line.

2
00:00:02.500 --> 00:00:04.000
Plain line.
<i>Styled</i> line.

3
00:00:04.500 --> 00:00:06.000
Roger: I am here.

Dans cette sortie, la table de styles, la position et le karaoké sont perdus ; les balises de mot restent. Le reste correspond ligne pour ligne.

La même conversion sur une entrée abîmée

Entrée

[
    { "start": 0, "end": 1000, "lines": ["First."] },
    { "start": 1000, "end": 2000, "text": "Second." },
    "not an object",
    { "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]

Sortie

WEBVTT

00:00:00.000 --> 00:00:01.000
First.

00:00:01.000 --> 00:00:02.000
Second.

00:00:02.000 --> 00:00:03.000
Third.

C’est le genre de dégâts des vrais fichiers : fins de ligne mélangées, espaces parasites, champs vides. Comparez avec l’exemple propre ci-dessus pour voir ce que le lecteur pardonne.

Questions fréquentes

Quel style du JSON traverse jusqu’au fichier WebVTT ?

Les balises de mot : gras, italique, souligné et couleur sortent en `<b>`, `<i>`, `<u>` et `<font color="…">`, que les navigateurs appliquent. La table `styles` du JSON — police, taille, contour, ombre, marges — n’est pas écrite.

Les positions et le karaoké du JSON survivent-ils dans un VTT ?

Ils sont perdus. L’objet `position` du JSON n’a pas de champ dans ce que ce convertisseur écrit, et les plages karaoké qui minutaient les syllabes n’ont pas de syntaxe dans le VTT produit. Le texte et les temps restent intacts.

À quoi ressemble un fichier JSON converti en VTT ?

À un fichier WebVTT : la ligne `WEBVTT`, puis chaque bloc avec une ligne d’identifiant facultative que nul lecteur n’affiche, un horodatage à trois décimales et le texte.

Un JSON au millième devient-il un VTT au millième ?

Non. Le JSON écrit `4126` et le VTT écrit `00:00:04.126` : même unité, même valeur. Une durée de 2,9 s reste 2,9 s au caractère près.

Puis-je revenir d’un VTT vers le JSON d’origine ?

Oui, avec une autre liste : VTT vers JSON perd le contenu propre au format, c’est-à-dire les blocs `NOTE`, `STYLE` et `REGION`, la ligne d’identifiant et les réglages de cue (`align:`, `position:`).

Outils associés