FreeToGenerate.com

Le conseil habituel — remplacez la virgule par un point et mettez WEBVTT en tête — casse en silence tout sous-titre contenant une esperluette.

WebVTT définit b, i, u, ruby, v, lang et c. Celles-là sont conservées ; toute autre devient du texte littéral, car une balise que WebVTT ne connaît pas n’est pas du balisage.

Collez un fichier de sous-titres pour le convertir.

Aussi disponible en : English · Español · Português · العربية

Convertir un SRT en VTT

De SubRip vers WebVTT avec l’échappement de caractères que la norme exige réellement, et un rapport de chaque arbitrage rendu par la conversion.

Qu’est-ce que la conversion SRT vers VTT ?

SubRip, le format .srt, est le fichier de sous-titres que presque tout le monde possède : un bloc numéroté, une heure d’entrée et une heure de sortie, une ou deux lignes de texte. WebVTT, le format .vtt, est ce que les navigateurs lisent réellement. L’élément video de HTML ne charge pas du tout un .srt, si bien que mettre des sous-titres sur une page web passe nécessairement par la conversion de l’un vers l’autre.

Les deux formats se ressemblent tellement que la conversion a la réputation d’être triviale. Les différences visibles tiennent à ce que les fichiers WebVTT commencent par le mot WEBVTT et que les horodatages emploient un point devant les millisecondes là où SubRip met une virgule. Presque tous les guides s’arrêtent là.

Ce conseil est incomplet d’une manière qui fait de vrais dégâts, et le reste de cette page porte sur ce qu’ils laissent de côté. Ce convertisseur s’exécute entièrement dans votre navigateur et vous signale chaque modification apportée au lieu de l’appliquer discrètement.

Comment l’utiliser

  1. Collez votre fichier .srt dans la première zone. Ouvrez-le avec n’importe quel éditeur de texte et copiez son contenu. Rien n’est envoyé : la conversion se fait dans cet onglet au fil de la frappe.
  2. Choisissez le traitement de la mise en forme et de la numérotation. Conserver les balises garde celles que WebVTT définit réellement et transforme les autres en texte littéral. Les numéros de sous-titre peuvent être gardés comme identifiants WebVTT ou retirés, puisque WebVTT ne les exige pas.
  3. Copiez le résultat ou téléchargez-le en .vtt. Lisez d’abord le rapport en dessous. Il énumère tout ce que la conversion a dû trancher — caractères échappés, balises conservées ou passées en texte, coordonnées abandonnées, blocs illisibles — pour que vous sachiez exactement ce qui a changé.

L’échappement que presque tous les convertisseurs ratent

Voici ce que les guides passent sous silence. WebVTT est une norme du W3C, et sa section 4.2 définit un segment de texte de sous-titre comme une suite de caractères autres que le saut de ligne, le retour chariot, U+0026 ESPERLUETTE et U+003C SIGNE INFÉRIEUR À. Ces deux caractères ne peuvent pas figurer littéralement dans le texte d’un sous-titre WebVTT : ils doivent s’écrire sous forme de références de caractère HTML, & et <.

SubRip n’a pas cette règle, puisque SubRip n’a aucune règle au sens formel. Un sous-titre disant Tom & Jerry, ou disant 5 < 6, est donc du SubRip parfaitement ordinaire et du WebVTT mal formé. Un convertisseur qui se borne à changer la virgule en point produit un fichier cassé d’une façon que vous ne remarquerez pas avant qu’un lecteur n’avale le texte ou n’affiche quelque chose d’étrange, car un signe inférieur non échappé ouvre ce que l’analyseur prend pour une balise.

Ce n’est pas affaire d’interprétation, et mieux vaut le vérifier que le croire. En passant la conversion naïve de Tom & Jerry < 5 dans l’analyseur de référence de WebVTT — celui que publient les éditeurs mêmes de la norme — on obtient trois erreurs : un échappement incorrect, une balise ouvrante que seuls v et lang peuvent annoter, et une balise ouvrante incorrecte. En passant dans le même analyseur la sortie de ce convertisseur, on n’en obtient aucune, sur l’ensemble des fichiers d’essai.

L’outil échappe l’esperluette avant le signe inférieur, ce qui a l’air d’un détail et n’en est pas un. Dans l’autre ordre, les esperluettes des entités qu’on vient d’écrire seraient échappées une seconde fois et &lt; deviendrait &amp;lt;, qui s’affiche comme du balisage plutôt que comme un caractère.

SubRip n’a pas de norme, alors le convertisseur signale ses conjectures

WebVTT dispose d’une norme consultable. SubRip n’en a nulle part : il est défini entièrement par ce que les lecteurs acceptent, si bien que le lire revient à enchaîner les arbitrages. Les fichiers réels emploient un point plutôt qu’une virgule, laissent tomber les heures dans les horodatages, omettent les numéros de séquence, séparent les blocs par des lignes composées d’espaces plutôt que réellement vides, et commencent par une marque d’ordre des octets. Tout cela est accepté ici, et chaque cas est compté.

Ce comptage est précisément l’objet. Faute d’autorité à invoquer, ce qu’un convertisseur peut faire d’honnête est de vous dire ce qu’il a décidé. Le rapport indique combien d’esperluettes et de signes inférieurs ont été échappés, combien de balises ont été conservées par opposition à celles passées en texte, combien d’horodatages arrivaient sans les heures, combien de sous-titres n’avaient pas de numéro, et si une marque d’ordre des octets a été retirée.

Il signale aussi des problèmes déjà présents dans votre fichier au lieu de les réparer en silence : sous-titres dont l’heure de sortie précède l’heure d’entrée, sous-titres de durée nulle, et sous-titres commençant avant la fin du précédent. Les sous-titres inversés sont émis dans l’ordre exigé par WebVTT, faute de quoi l’analyseur de référence les rejette, mais le fait est signalé plutôt que masqué.

Les blocs illisibles sont écartés du résultat et vous sont montrés en entier. Un convertisseur qui jette en silence ce qu’il ne comprend pas est pire qu’un convertisseur qui échoue bruyamment, car on l’apprend au moment où quelqu’un regarde la vidéo.

Limites honnêtes

Les fichiers SubRip qui circulent portent parfois des coordonnées X1, X2, Y1 et Y2 sur la ligne des temps, pour placer le sous-titre à l’écran. Elles sont abandonnées, et le nombre est signalé. WebVTT exprime la position au moyen de réglages de sous-titre mesurés en pourcentages de la vidéo, ce qui constitue un modèle véritablement différent, et il n’existe pas de correspondance fidèle sans connaître les dimensions de la vidéo. Une position fausse étant pire qu’aucune position, l’outil refuse de deviner.

Les balises de mise en forme sont traitées selon ce que WebVTT définit réellement : b, i, u, ruby, rt, v, lang et c. Celles-là survivent. Une balise font assortie d’un attribut de couleur, très répandue en SubRip, n’est pas du balisage WebVTT : elle devient donc du texte littéral et est comptée comme telle. C’est délibéré et c’est la lecture honnête — la laisser en place donnerait un fichier que l’analyseur de référence rejette, et la supprimer en silence perdrait un contenu que vous voulez peut-être.

Cet outil convertit du texte, non des fichiers. Collez le contenu plutôt que de déposer un fichier, ce qui laisse d’ailleurs la question de l’encodage à votre éditeur de texte au lieu de la deviner ici. WebVTT doit être en UTF-8 ; si votre .srt est dans un ancien encodage Windows, ouvrez-le et réenregistrez-le en UTF-8, sans quoi les accents ne survivront pas.

Enfin, la conversion ne va que dans un sens. WebVTT admet des régions, des blocs de style et des réglages de sous-titre que SubRip ne sait pas exprimer : faire le trajet inverse perdrait donc des choses en silence, ce qui est exactement le défaut dont cette page se plaint.

Pourquoi est-ce gratuit ?

Parce que cela ne coûte rien à faire tourner. La conversion se déroule dans votre navigateur au fil de la frappe. Rien n’est envoyé, rien n’est journalisé, et aucun serveur ne voit vos sous-titres puisqu’aucun serveur n’intervient.

Ni compte, ni inscription, ni filigrane, ni limite de taille au-delà de ce que votre propre navigateur peut contenir. Les règles d’échappement viennent de la norme WebVTT du W3C, et la sortie est contrôlée avec l’analyseur de référence publié par les éditeurs de cette norme, et non avec l’idée qu’un autre site se fait d’un fichier .vtt.