GIF speichert für jedes Bild eine Wartezeit

Die Graphic Control Extension von GIF89a speichert Verzögerungen ungleich null in Hundertstelsekunden: eine Einheit entspricht 10 ms. Moyoutil übergibt je Bild 1000/FPS ms an den enthaltenen Encoder gifenc 1.0.3. Dieser teilt durch 10 und rundet. Bei 15 FPS werden etwa 66.667 ms zu 7 Einheiten oder 70 ms. Die gewählten FPS steuern die Bildentnahme; der FPS-Wert wird nicht unverändert im GIF gespeichert.

Gespeicherte Verzögerungssummen von 1000, 1000 und 1050 ms für synthetische Einsekundensequenzen mit 5, 10 und 15 FPS
Eigenes Diagramm der gespeicherten Verzögerungen. Die Balkenlängen sind proportional zur Summe der codierten Felder. Es zeigt keine gemessene Bildschirmwiedergabezeit.

GIF89a §23: Graphic Control Extension

Die gespeicherte Summe einer Einsekundenauswahl reproduzieren

Wir erzeugten synthetische 1×1-px-Bilder mit demselben GIF-Worker-Code und Encoder und lasen ihre Verzögerungsfelder. Eine Sekunde bei 5 FPS ergab 5 Bilder × 200 ms = 1000 ms; bei 10 FPS 10 × 100 ms = 1000 ms; bei 15 FPS 15 × 70 ms = 1050 ms. Dies sind gespeicherte Werte der Test-GIFs. Es wurde weder ein echtes Video konvertiert noch die Wiedergabezeit eines Players gemessen. Die folgende Berechnung reproduziert dieselben Zahlen.

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

Die Bildanzahl ist ceil(Länge × FPS). Eine Auswahl von 0.1 Sekunden bei 15 FPS ergibt daher 2 Bilder und 140 ms gespeicherte Gesamtverzögerung. Die aktuelle GIF-Oberfläche bietet 5, 10 und 15 FPS bei maximal 10 Sekunden und 150 Bildern. Prüfen Sie zeitkritische Ergebnisse im vorgesehenen Player. Diese Berechnung sagt weder die Wiedergabezeit aller Player noch die Dauer der Konvertierung voraus.

gifenc: writeFrame / delayTime

Häufig gestellte Fragen

Werden bei 15 FPS aus einer Sekunde immer 1.05 Sekunden Wiedergabe?

Nein. 1050 ms ist die gespeicherte Verzögerungssumme dieses Beispiels mit einer Sekunde und 15 Bildern. Die tatsächliche Darstellung muss separat geprüft werden; dieser Artikel misst keine Wiedergabezeiten verschiedener Player.