GIF stocke un temps d’attente pour chaque image

La Graphic Control Extension de GIF89a stocke les délais non nuls en centièmes de seconde : une unité vaut 10 ms. Moyoutil transmet 1000/FPS ms par image à son encodeur intégré gifenc 1.0.3, qui divise par 10 puis arrondit. À 15 FPS, environ 66.667 ms deviennent 7 unités, soit 70 ms. Le FPS choisi contrôle l’échantillonnage des images ; ce nombre n’est pas stocké tel quel comme FPS dans le GIF.

Totaux de délais stockés de 1000, 1000 et 1050 ms pour des séquences synthétiques d’une seconde à 5, 10 et 15 FPS
Schéma original des délais stockés. La longueur des barres est proportionnelle à la somme des champs encodés. Ce n’est pas une mesure du temps de lecture à l’écran.

GIF89a §23: Graphic Control Extension

Reproduire le total stocké pour une sélection d’une seconde

Nous avons généré des images synthétiques de 1×1 px avec le même code du worker GIF et le même encodeur, puis lu leurs champs de délai. Une seconde à 5 FPS donne 5 images × 200 ms = 1000 ms ; à 10 FPS, 10 × 100 ms = 1000 ms ; à 15 FPS, 15 × 70 ms = 1050 ms. Ce sont les valeurs stockées dans les GIF de test. Nous n’avons ni converti une vraie vidéo ni mesuré la durée de lecture d’un lecteur. Le calcul ci-dessous reproduit ces nombres.

for (const fps of [5, 10, 15]) {
  const frames = Math.ceil(1 * fps);
  const delayMs = Math.round(1000 / fps / 10) * 10;
  console.log(fps, frames, delayMs, frames * delayMs);
}
// 5 5 200 1000
// 10 10 100 1000
// 15 15 70 1050

Le nombre d’images vaut ceil(durée × FPS). Une sélection de 0.1 seconde à 15 FPS donne donc 2 images et 140 ms de délai total stocké. L’interface GIF actuelle propose 5, 10 et 15 FPS, avec des limites de 10 secondes et 150 images. Si le timing compte, vérifiez le fichier dans le lecteur prévu. Ce calcul ne prédit ni la lecture dans tous les lecteurs ni la durée de conversion.

gifenc: writeFrame / delayTime

Questions fréquemment posées

Choisir 15 FPS fait-il toujours lire une seconde en 1.05 seconde ?

Non. Les 1050 ms sont la somme des délais stockés de cet exemple d’une seconde et 15 images. L’affichage réel nécessite une vérification distincte ; cet article ne mesure pas la lecture dans différents lecteurs.