Convertir SBV en JSON
Ou collez le texte d'un sous-titre
Ce que cette conversion change
Rien n'est perdu dans ce sens — chaque fonctionnalité du format source a un équivalent dans le format cible.
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 fichier SBV en JSON structuré. Le SBV ne contient que des blocs de texte et deux temps par bloc ; le JSON sait représenter cela exactement, et la conversion ne perd donc rien.
Chaque bloc devient un objet du tableau `cues`, avec `start` et `end` en millisecondes entières et un tableau `lines` pour les lignes de texte. L’ordre chronologique est conservé, et les blocs sont triés par début si le fichier d’origine ne l’était pas.
Il n’y a aucun réglage à remplir. Le fichier est traité dans le navigateur, sans envoi ni inscription. Un lot complet peut être déposé d’un coup : la file travaille dans l’ordre, l’opération est annulable et les résultats reviennent dans une archive ZIP.
Exemples
Un fichier SBV courant converti en JSON
Entrée
0:00:01.000,0:00:03.500
The quick brown fox.
0:00:04.000,0:00:06.250
Jumps over the lazy dog.
0:00:07.000,0:00:09.000
Two lines here.
And a second one.
Sortie
{
"version": 1,
"cues": [
{
"start": 1000,
"end": 3500,
"lines": [
"The quick brown fox."
]
},
{
"start": 4000,
"end": 6250,
"lines": [
"Jumps over the lazy dog."
]
},
{
"start": 7000,
"end": 9000,
"lines": [
"Two lines here.",
"And a second one."
]
}
]
}
Rien n’est perdu dans ce sens : chaque couple de temps et chaque ligne de texte se retrouve dans l’objet produit, sans transformation.
La même conversion sur une entrée abîmée
Entrée
0:00:02.000,0:00:04.000
Carriage-return line endings.
0:00:06.000,0:00:08.000
Indented timecode, no final newline.Sortie
{
"version": 1,
"cues": [
{
"start": 2000,
"end": 4000,
"lines": [
"Carriage-return line endings."
]
},
{
"start": 6000,
"end": 8000,
"lines": [
"Indented timecode, no final newline."
]
}
]
}
BOM, retours chariot et blocs sans timecode lisible : le JSON reste analysable, et les blocs écartés sont déclarés dans le rapport de lecture.
Questions fréquentes
À quoi ressemble la sortie quand un SBV devient du JSON ?
À un objet JSON dont le tableau `cues` contient une entrée par bloc, chacune avec `start`, `end` et `lines`. Un bloc SBV donne une entrée, dans le même ordre et avec le même texte ; une ligne accentuée devient un objet portant son tableau `tags`.
Les horodatages SBV sont-ils exacts dans le fichier JSON ?
Oui. Le SBV écrit `0:00:04.126`, le JSON écrit `4126` : même instant, même unité, sans arrondi. La milliseconde est la finesse maximale des deux côtés, et un bloc de 2,9 s reste à 2 900 ms.
Comment un dialogue SBV sur deux lignes sort-il en JSON ?
Sous forme de deux chaînes dans le tableau `lines` du même objet : `["Two lines here.", "And a second one."]`. Le regroupement est conservé par la structure même de l’objet, et les deux lignes ne peuvent pas se séparer à la relecture.
Les blocs SBV conservent-ils leur ordre dans la sortie JSON ?
Oui, et ils sont triés par heure de début au passage, du plus tôt au plus tard. Si le fichier SBV listait ses blocs dans un autre ordre, le JSON les remet dans l’ordre chronologique : c’est une correction de structure, pas une réécriture du contenu.
Le JSON produit peut-il redevenir un SBV sans perte ?
Non : le retour JSON vers SBV est la direction coûteuse. Le SBV ne sait pas porter le style, la position ni le karaoké, donc ces informations ne survivraient pas si le JSON en contenait. Dans le sens SBV vers JSON, en revanche, il n’y a rien à perdre.
Le JSON produit conserve-t-il l’encodage du fichier SBV ?
Non. La sortie est écrite en UTF-8, avec des fins de ligne Unix et sans BOM. Le fichier d’entrée peut être en UTF-16 ou dans un encodage Windows : il est décodé à la lecture, et le panneau de résultat indique ce décodage lorsqu’il a lieu.