GIF हर फ़्रेम के लिए प्रतीक्षा समय सहेजता है
GIF89a का Graphic Control Extension शून्य से अलग देरी को सेकंड के सौवें भाग में सहेजता है: एक इकाई 10 ms है। Moyoutil हर फ़्रेम के लिए 1000/FPS ms को शामिल gifenc 1.0.3 एन्कोडर को देता है, जो 10 से भाग देकर राउंड करता है। 15 FPS पर लगभग 66.667 ms, 7 इकाइयाँ यानी 70 ms बनते हैं। चुना गया FPS फ़्रेम निकालने की सेटिंग है; यह GIF में बिना बदलाव सहेजी गई FPS संख्या नहीं है।
एक सेकंड के चयन का सहेजा हुआ योग पुनः बनाएँ
हमने उसी GIF worker कोड और एन्कोडर से 1×1 px के काल्पनिक फ़्रेम बनाए और उनके देरी फ़ील्ड पढ़े। एक सेकंड पर 5 FPS से 5 फ़्रेम × 200 ms = 1000 ms; 10 FPS से 10 × 100 ms = 1000 ms; 15 FPS से 15 × 70 ms = 1050 ms मिले। ये बने हुए परीक्षण GIF के सहेजे गए मान हैं। हमने असली वीडियो परिवर्तित नहीं किया या प्लेयर का प्लेबैक समय नहीं मापा। नीचे का गणना कोड वही संख्याएँ देता है।
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फ़्रेम संख्या ceil(अवधि × FPS) है। इसलिए 0.1 सेकंड और 15 FPS से 2 फ़्रेम और कुल 140 ms की सहेजी गई देरी मिलती है। वर्तमान GIF इंटरफ़ेस 5, 10 और 15 FPS देता है तथा सीमा 10 सेकंड और 150 फ़्रेम है। समय महत्वपूर्ण हो तो परिणाम को उपयोग किए जाने वाले प्लेयर में जाँचें। यह गणना सभी प्लेयर का प्लेबैक समय या रूपांतरण में लगने वाला समय नहीं बता सकती।
अक्सर पूछे जाने वाले प्रश्न
क्या 15 FPS चुनने पर एक सेकंड हमेशा 1.05 सेकंड में चलता है?
नहीं। 1050 ms इस एक सेकंड और 15 फ़्रेम वाले उदाहरण की सहेजी गई देरी का योग है। वास्तविक प्रदर्शन समय अलग से जाँचना होगा; इस लेख में अलग-अलग प्लेयर का प्लेबैक समय नहीं मापा गया है।