GIF guarda un tiempo de espera por fotograma

La Graphic Control Extension de GIF89a guarda los retardos distintos de cero en centésimas de segundo: una unidad equivale a 10 ms. Moyoutil envía 1000/FPS ms por fotograma a gifenc 1.0.3, incluido en el sitio, que divide por 10 y redondea. A 15 FPS, unos 66.667 ms se convierten en 7 unidades, o 70 ms. El FPS elegido controla el muestreo; no se guarda como una cifra de FPS sin cambios en el GIF.

Totales de retardo guardado de 1000, 1000 y 1050 ms para secuencias sintéticas de un segundo a 5, 10 y 15 FPS
Diagrama original de los retardos guardados. Las barras son proporcionales a la suma de los campos codificados. No representa tiempos de reproducción medidos en pantalla.

GIF89a §23: Graphic Control Extension

Reproduce el total guardado para una selección de un segundo

Generamos fotogramas sintéticos de 1×1 px con el mismo código del worker GIF y codificador, y leímos sus campos de retardo. Un segundo a 5 FPS produjo 5 fotogramas × 200 ms = 1000 ms; a 10 FPS, 10 × 100 ms = 1000 ms; a 15 FPS, 15 × 70 ms = 1050 ms. Son valores guardados en los GIF de prueba. No convertimos un video real ni medimos el tiempo de reproducción de un reproductor. El cálculo siguiente reproduce las mismas cifras.

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

El número de fotogramas es ceil(duración × FPS). Una selección de 0.1 segundos a 15 FPS produce 2 fotogramas con un retardo total guardado de 140 ms. La interfaz GIF actual ofrece 5, 10 y 15 FPS, con límites de 10 segundos y 150 fotogramas. Si el tiempo es importante, comprueba el archivo en el reproductor que usarás. Este cálculo no predice la reproducción en todos los reproductores ni el tiempo de conversión.

gifenc: writeFrame / delayTime

Preguntas frecuentes

¿Elegir 15 FPS siempre hace que un segundo se reproduzca en 1.05 segundos?

No. Los 1050 ms son la suma de los retardos guardados de este ejemplo de un segundo y 15 fotogramas. El tiempo de visualización requiere una verificación independiente; este artículo no mide la reproducción en distintos reproductores.