Le LRC est un texte de chanson avec un instant de début par ligne, et aucune fin. Le SRT est le format de sous-titres que tout lit, et le plus simple. ffmpeg se tient entre les deux, et cette page dit exactement ce qui arrive à un fichier LRC en route vers le SRT.
Ce qui s'exécute quand un fichier LRC devient un SRT
ffmpeg tenu sur un seul fil d'exécution, sur une machine que nous louons et que nous surveillons. Votre fichier LRC est envoyé une fois, ffmpeg s'exécute une fois, le fichier SRT revient, et aucun des deux fichiers n'est conservé. LRC vers SRT fait partie des 3649 paires sur lesquelles ce moteur a été sondé avec un vrai fichier, et c'est pour cela que cette page existe quand celles que la sonde n'a pas su prouver n'existent pas.
Ce qui survit du fichier LRC dans le fichier SRT
Chaque ligne, et l'instant où elle apparaît. Le moteur lit votre LRC et écrit les mêmes répliques dans le SRT : le texte n'est pas recoupé, l'ordre n'est pas touché, et le début de chaque réplique tombe là où il était. Il compte les répliques à la sortie et refuse le résultat si le compte a bougé.
Les accents et tous les autres caractères. Le SRT est écrit en UTF-8, et c'est la seule chose qui empêche des sous-titres d'arriver en points d'interrogation sur une machine qui n'est pas la vôtre.
Un fichier dont on peut prévoir la taille. Nous avons passé le même fichier de 200 répliques par les six formats et pesé ce qui sortait : 88 octets par réplique en SRT, soit 38 % de plus que le LRC, parce que cela fait un numéro, deux horodatages, le texte et une ligne vide, une fois par réplique. Ces octets en plus achètent quelque chose, et la section suivante dit quoi.
Chaque ligne, dans l'ordre, avec l'instant où elle commence. C'est tout ce qu'un fichier LRC contient.
Ce que la conversion LRC vers SRT vous coûte
Rien, et quelque chose est ajouté à la place, ce qui est la partie inhabituelle. Un LRC n'a pas d'instants de fin : le moteur doit donc les inventer, et chaque ligne court jusqu'au début de la suivante. C'est une supposition raisonnable, et cela reste une supposition.
La dernière ligne n'a pas de ligne suivante, et c'est là que cela tournait mal. ffmpeg y écrivait son marqueur d'absence de fin, jusqu'à 1 193 heures, si bien que le dernier sous-titre restait à l'écran quarante-neuf jours. Le moteur le plafonne désormais à cinq secondes et le dit dans un en-tête de réponse. Sur un fichier de deux cents lignes, cent quatre-vingt-dix-neuf répliques étaient justes et la dernière absurde, ce qui est exactement le genre de défaut qu'on ne rencontre qu'en production.
D'où viennent les fichiers LRC et SRT
LRC. Fait pour le karaoké et pour les lecteurs de musique qui surlignent la ligne en cours. Chaque ligne porte l'instant où elle commence et rien d'autre : il n'y a aucune fin dans le format, et c'est le seul fait qui décide de ce que convertir vers lui et depuis lui peut vouloir dire.
SRT. Écrit pour SubRip, un programme Windows qui extrayait les sous-titres des DVD, et il a gagné en étant trivial : un numéro, deux horodatages, les lignes, une ligne vide. Aucune mise en forme, aucune spécification, aucun comité. Tous les lecteurs de la Terre le lisent.
Si un modèle doit lire le fichier SRT
Un fichier de sous-titres est une transcription à laquelle l'horloge est attachée, et c'est ce qui rend l'objet digne d'être donné à un modèle : chaque ligne arrive avec l'instant où elle a été dite. LRC à l'entrée, SRT à la sortie, et le DÉBUT de chaque ligne tombe là où il était, si bien qu'une question comme « qu'a-t-on dit à la onzième minute » garde une réponse ensuite. Les fins sont une autre affaire, puisqu'un LRC n'en porte aucune : lisez la section plus bas avant de leur faire confiance.
LRC vers SRT, mesuré plutôt que promis
En passant LRC vers SRT sur le moteur réel avec un vrai fichier, ffmpeg a écrit 137 octets au format SRT en 0,1 secondes, machine par ailleurs au repos. C'est un fichier LRC un jour donné et non une moyenne, et c'est pourquoi le nombre est donné avec le fichier qui l'a produit.
Le verdict LRC vers SRT a été obtenu par la relecture du texte, des minutages et de la durée de chaque réplique, c'est-à-dire que la sortie a été relue et reconnue. Le contrôle employé compte, parce qu'ils ne prouvent pas tous la même chose, et un code de statut 200 ne prouve strictement rien sur ce que le fichier SRT contient.
Les autres routes vers SRT, et ce qu'elles ont mesuré
Parmi les routes publiées vers SRT, LRC est la plus grosse sortie des 3 mesurées. Les fichiers témoins diffèrent : ce classement porte sur la sonde et non sur votre document.
VTT vers SRT : 137 octets en 0,1 secondes.
ASS vers SRT : 137 octets en moins d'un dixième de seconde.
Ce que nous ne prétendrons pas sur LRC vers SRT
Un fichier LRC de plus de 5 Mo est refusé avant la fin de l'envoi plutôt qu'après, pour que vous n'attendiez pas un refus.
Une conversion LRC vers SRT qui dépasse 30 secondes est tuée, et le processus ffmpeg avec elle. Une exécution abandonnée resterait posée sur l'un des deux cœurs de la machine jusqu'à ce que quelqu'un le remarque.
Les instants de fin de votre SRT n'étaient pas dans le fichier LRC et n'auraient pas pu y être. Ce sont les suppositions du moteur, et la dernière est une valeur que nous avons choisie parce que celle de ffmpeg était hors bornes. Un en-tête de réponse dit combien ont été plafonnés. Le dire ici plutôt que de vous le laisser découvrir dans un lecteur est tout l'objet de cette section.
Cette famille ne touche pas au minutage lui-même. Décaler des sous-titres de deux secondes, les étirer pour une autre cadence d'images ou fusionner deux fichiers sont des besoins réels, et aucun ne se produit ici : ceci convertit un conteneur en un autre conteneur.
Un fichier LRC à la fois, choisi dans le navigateur. Il n'y a rien d'autre à régler et rien d'autre à proposer.
LRC vers SRT : les questions que l'on pose
Qu'est-ce qui convertit vraiment mon fichier LRC en SRT ?
C'est ffmpeg qui s'en charge, tenu sur un seul fil d'exécution, sur une machine que nous louons et que nous surveillons. Ni astuce de navigateur, ni service d'un tiers : le fichier LRC est envoyé une fois, ffmpeg s'exécute une fois, le SRT revient, et aucun des deux fichiers n'est conservé ensuite.
Combien de temps prend une conversion LRC vers SRT ?
Sur le fichier utilisé par la sonde, ffmpeg a mis 0,1 seconde et écrit 137 octets de SRT. C'est une mesure réelle sur un fichier LRC réel, pas une moyenne et pas une promesse sur le vôtre : un LRC plus gros prend plus longtemps, et au-delà de 30 secondes l'exécution est arrêtée.
Qu'est-ce que je perds en passant du LRC au SRT ?
Celle qu'il faut connaître en premier : rien, et quelque chose est ajouté à la place, ce qui est la partie inhabituelle. Un LRC n'a pas d'instants de fin : le moteur doit donc les inventer, et chaque ligne court jusqu'au début de la suivante. C'est une supposition raisonnable, et cela reste une supposition.
Le minutage collera-t-il encore à ma vidéo ?
Oui. Le début de chaque réplique est repris tel quel, et non recalculé. Les FINS sont une autre affaire : votre fichier LRC n'en a aucune, le moteur les déduit donc de la ligne suivante. Lisez la section plus haut avant de vous servir du résultat.
Combien de temps la dernière ligne reste-t-elle à l'écran ?
Cinq secondes, et ce chiffre est le nôtre et non le vôtre. Votre fichier LRC n'a aucun instant de fin : le moteur déduit chacun de la ligne suivante ; la dernière ligne n'a pas de suivante, et la réponse de ffmpeg y était une valeur hors bornes qui laissait le sous-titre affiché quarante-neuf jours. Nous la plafonnons et le disons dans un en-tête de réponse.
La conversion LRC vers SRT est-elle gratuite ?
Il y a une franchise gratuite chaque mois, et une conversion LRC vers SRT coûte un demi-crédit dessus. Quand la franchise est épuisée, l'outil le dit et s'arrête, plutôt que de vous remettre discrètement un SRT moins bon.