Aller au contenu principal
SubtitleMatrix

Convertir JSON en SBV

Ou collez le texte d'un sous-titre

Ce que cette conversion change

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

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 SBV. Chaque bloc JSON — `start`, `end` en millisecondes, `lines` — donne une ligne d’horodatage `0:00:04.126,0:00:06.250` suivie du texte. Le format n’a ni numérotation ni en-tête.

Le SBV ne porte pas la table `styles`, l’objet `position` ni les plages karaoké du JSON. Les balises de mise en forme d’un mot, elles, sont écrites et relues. La liste ci-dessus vient du croisement des capacités, pas de votre fichier.

Un fichier ou un lot complet : la file les enchaîne et les résultats descendent dans un ZIP. Le traitement reste local.

Exemples

Un fichier JSON typique, converti en SBV

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

0:00:00.000,0:00:02.000
Hello world.
Second line.

0:00:02.500,0:00:04.000
Plain line.
<i>Styled</i> line.

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

0:00:00.000,0:00:01.000
First.

0:00:01.000,0:00:02.000
Second.

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

À quoi ressemble un fichier JSON converti en SBV ?

À un fichier SBV : aucune numérotation, aucun en-tête. Chaque bloc est une ligne avec les deux temps, puis le texte, et une ligne vide sépare les blocs. Un `.sbv` se relit directement dans YouTube.

Quelles balises de style du JSON traversent vers le SBV ?

Les balises portées par le texte — `<i>`, `<b>`, `<u>` et `<font color="…">` — sont écrites telles quelles. La table `styles` du JSON, avec sa police, sa taille, son contour, son ombre et ses marges, n’a pas de champ dans un fichier SBV.

La position et le karaoké du JSON survivent-ils dans un SBV ?

Non. Le SBV ne dit pas où le sous-titre s’affiche et ne sait pas minuter une syllabe : l’objet `position` et les plages karaoké du JSON sont donc perdus, alors que le texte et les bornes en millisecondes restent exacts.

Un bloc JSON de deux lignes reste-t-il groupé dans le SBV ?

Oui. Les deux entrées du tableau `lines` sortent sur deux lignes consécutives, sous un seul horodatage, et le lecteur les affiche ensemble.

Le retour d’un SBV vers le JSON coûte-t-il quelque chose ?

Le retour n’ajoute aucune perte, car un SBV contient déjà moins que ce que le JSON sait décrire. Mais ce que cette page a retiré ne revient pas : ni la table de styles, ni les positions, ni le karaoké.

Outils associés