Aller au contenu principal
SubtitleMatrix

Convertir le drop-frame en non-drop

Code temporelCode temporel drop-frame
Ou collez le texte d'un sous-titre

Options

Le non-drop à 30 fps et le drop-frame à 29,97 écrivent la même horloge différemment, et ce cadre choisit dans quel sens le fichier est lu et réécrit. Un bloc à une heure se lit 01:00:00,000 dans l'un et 01:00:03,600 dans l'autre — les deux sont à 3,6 secondes d'écart par heure, ce n'est pas une erreur d'arrondi. Le titre de la page nomme un sens, et ce cadre ne propose que celui-là : le fichier obtenu est bien celui dont la page parle. Rien ne change dans le texte : aucun bloc n'est remis à l'heure de la vidéo, aucune fréquence d'images n'est convertie, et un bloc dans la première minute d'une heure ressort exactement comme il est entré, car aucune étiquette d'image n'y est abandonnée.

La fréquence d'images dans laquelle les temps sont comptés. Sur les pages de format, c'est ce dont MicroDVD a besoin, car il stocke les temps sous forme de numéros d'image. Sur les pages de fréquence d'images, c'est la cadence à laquelle le fichier a été minuté — la version pour laquelle les sous-titres ont été faits — et le second cadre de la page prend la cadence de la vidéo avec laquelle vous allez les utiliser. 23,976, 24, 25, 29,97, 30, 50, 59,94 et 60 sont les valeurs courantes. Se tromper décale toute la chronologie et, sur les pages de fréquence d'images, ce décalage est un rapport, pas un montant fixe.

Cette page relabellise chaque code temporel d'un fichier de sous-titres, de 29,97 images/s drop-frame vers 30 images/s non-drop. Les mots, les numéros de bloc, l'ordre des blocs et les retours à la ligne appartiennent au fichier et ressortent intacts ; seules les deux valeurs d'horloge de chaque bloc sont réécrites. Le décalage n'est pas une constante : il vaut zéro pendant la première minute d'une heure, 3,6 secondes au bout d'une heure, 36 secondes au bout de dix heures, et il dépend donc de l'endroit où se trouve le bloc.

Le fichier visé ici a été horodaté sur un affichage ou une table de montage qui comptait en drop-frame, ce qui est l'usage courant sur du 29,97, tandis que la chaîne en aval lit les horloges en non-drop. Relu ainsi, chaque code temporel est trop grand d'une quantité qui ne cesse de croître : les sous-titres arrivent tôt, et de plus en plus tôt à mesure que le programme avance. Une demi-heure plus tard, l'erreur atteint 1,8 seconde. La correction n'est donc pas un simple décalage appliqué au fichier : c'est le même relabellisage répété à chaque horodatage, avec une amplitude fixée par la position du bloc.

Lire une horloge comme un code temporel revient à l'aligner sur le tic de 30 images/s le plus proche, et en drop-frame deux de ces tics n'existent pas. La convention saute les étiquettes ;00 et ;01 au début de chaque minute, sauf toutes les dix minutes : elle compte 00:00:59;28, 00:00:59;29, puis passe directement à 00:01:00;02. Une valeur entrante 00:01:00,000 désigne donc un instant que la convention ne sait pas écrire ; elle est ramenée à la dernière étiquette disponible, 00:00:59,933, soit 67 millisecondes plus tôt. C'est une limite réelle de l'arithmétique, pas une tolérance, et la page l'annonce : sur deux heures, 216 valeurs sont concernées.

Un bloc qui devient plus court qu'une image après cet alignement ne peut pas être écrit, car ses deux bords tombent sur le même tic et un bloc dont la fin égale le début n'est pas un bloc. Il est supprimé et compté dans le rapport de pertes, jamais étiré en silence jusqu'à une image. En pratique, cela ne concerne que du matériel monté image par image, mais la page ne suppose pas que ce cas soit rare : elle en donne le nombre, et un fichier qui n'en contient aucun n'affiche rien.

Rien n'est envoyé. Le fichier est lu et réécrit dans l'onglet du navigateur et ne quitte jamais la machine, pour la même raison que sur toutes les autres pages du site : un matériel soumis à une obligation de confidentialité ne peut pas être confié à un service de conversion, et cette page ne le demande pas.

Exemples

Un fichier à cinq minutes

Entrée

1
00:05:00,000 --> 00:05:02,000
The room is dark.

2
00:10:00,000 --> 00:10:03,000
A cold night.

Sortie

1
00:04:59,667 --> 00:05:01,667
The room is dark.

2
00:09:59,400 --> 00:10:02,400
A cold night.

La correction n'est pas un nombre unique appliqué au fichier : à cinq minutes, l'horloge recule de 333 ms, et à dix minutes elle recule de 600 ms, parce que le drop-frame a écarté dix étiquettes avant le premier bloc et dix-huit avant le second. Chaque bloc conserve sa durée à la milliseconde, puisque ses deux bords reculent du même montant : c'est un relabellisage, pas un décalage.

La même correction à une heure

Entrée

1
01:00:03,600 --> 01:00:06,600
An hour into the programme.

Sortie

1
01:00:00,000 --> 01:00:03,000
An hour into the programme.

À une heure, le 01:00:03,600 du drop-frame est ce que le non-drop appelle 01:00:00,000 : 108 étiquettes sautées, soit 3600 ms. C'est le nombre avec lequel vérifier la page : la première ligne de la sortie doit être exactement 3600 ms plus tôt que la première ligne de l'entrée, et un fichier sorti d'une table drop-frame doit retomber sur l'heure ronde.

Un bloc dans la première minute

Entrée

1
00:00:04,000 --> 00:00:06,000
Still early in the file.

2
00:05:00,000 --> 00:05:02,000
This one does move.

Sortie

1
00:00:04,000 --> 00:00:06,000
Still early in the file.

2
00:04:59,667 --> 00:05:01,667
This one does move.

Pendant la première minute d'une heure, aucune étiquette n'est sautée : les deux conventions écrivent ces soixante secondes de la même façon et le premier bloc reste tel quel. Le second bloc, à cinq minutes, recule. Un bloc inchangé à côté d'un bloc déplacé est le résultat correct pour ce fichier, pas une exécution interrompue : la correction est nulle en haut d'une heure et croît à partir de la première minute.

Questions fréquentes

Pourquoi les sous-titres ressortent-ils plus tôt plutôt que plus tard ?

Parce que les horloges du fichier étaient plus grandes que les instants qu'elles désignent. Le non-drop compte 30 étiquettes par seconde comme si 29,97 images/s en fournissait 30, si bien qu'il prend de l'avance sur le temps réel ; le drop-frame saute deux étiquettes par minute pour rester calé sur l'horloge. Un code lu sur une table drop-frame puis interprété comme non-drop pointe donc au-delà de sa position, et la correction soustrait cet excès : 333 ms à cinq minutes, 3600 ms à une heure, 36000 ms à dix heures. Le montant est nul pour toute horloge située dans la première minute d'une heure, et aucune valeur n'est poussée sous 00:00:00.

Que devient un code temporel drop-frame qui ne peut pas être écrit ?

Il est ramené à la dernière étiquette disponible. Chaque minute avec saut du drop-frame n'a ni son étiquette ;00 ni son ;01, donc 00:01:00,000 et 00:01:00,010 ne sont pas des horloges que la convention peut afficher : elles atterrissent sur 00:00:59,933, 67 millisecondes plus tôt. C'est le seul endroit de la page où la sortie n'est pas un relabellisage exact, et il est borné : deux étiquettes par minute concernée, soit 216 valeurs sur deux heures. La page le nomme ici plutôt que de vous laisser le découvrir dans le diff.

Un bloc peut-il disparaître de mon fichier ?

Seulement un bloc plus court qu'une image, soit 33,37 ms. Deux causes peuvent le réduire à un seul tic : l'alignement décrit plus haut, où un bloc de dix millisecondes comme 00:01:00,000 à 00:01:00,010 voit ses deux bords ramenés à 00:00:59,933, et un bloc déjà inférieur à une image à l'arrivée. Un bloc dont le début et la fin sont le même instant ne peut pas être écrit, il est donc supprimé et son nombre apparaît dans le rapport de pertes au-dessus de l'espace de travail. Un fichier qui n'en a aucun n'affiche rien, ce qui est le cas courant.

Qu'est-ce qui change d'autre que les valeurs d'horloge ?

Rien. Les numéros de bloc, leur ordre, le texte de chaque ligne, les retours à la ligne durs à l'intérieur d'un bloc et le nombre total de blocs appartiennent au fichier et restent tels quels. La page réécrit les deux mêmes nombres par bloc, relabellisés. Elle n'inscrit nulle part que les horloges sont désormais non-drop, parce qu'aucun des formats lus ici — SRT, WebVTT, ASS, SSA, SBV, SAMI, MicroDVD, TTML, JSON, CSV — ne possède de champ pour cela, et le fichier déposé ne le disait pas non plus.

Quelle fréquence d'images faut-il saisir dans le champ ?

La fréquence réelle de vos images, quelle qu'elle soit : elle n'intervient pas dans cette conversion. Les 30 et 29,97 du nom de la page sont les conventions de comptage écrites dans la chaîne de code temporel, pas la cadence de la vidéo, et rien ici n'est mis à l'échelle par le nombre saisi. Le champ n'est obligatoire que parce que MicroDVD stocke ses temps en numéros d'image plutôt qu'en horloges, et qu'on ne peut pas lire un fichier MicroDVD sans connaître sa fréquence.

En appliquant la page opposée à ce résultat, retrouve-t-on le fichier d'origine ?

Oui, octet pour octet, tant qu'aucun code temporel ne tombe dans la classe que le drop-frame ne sait pas écrire. Les deux pages sont la même arithmétique lue dans deux sens : celle-ci soustrait un montant croissant, l'autre le rajoute, et les montants sont fixés par la position de chaque bloc plutôt que par un décalage fixe. L'exception est le cas d'alignement — un 00:01:00,000 sorti en 00:00:59,933 revient en 00:00:59,933 — et c'est la seule classe d'horodatage pour laquelle la paire n'est pas un aller-retour. Sur un fichier dont aucun code ne tombe dans cette classe, l'aller-retour est exact : l'erreur mesurée est de 0 ms, et non d'une image.

Outils associés