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.
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 1050Le 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.
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.