छोटा जवाब
वीडियो से GIF बनाने वाला टूल खोलिए, क्लिप भीतर छोड़ दीजिए, जो सेकंड चाहिए उन पर निशान लगाइए, और चौड़ाई 480 तथा दर 12 फ़्रेम प्रति सेकंड ही रहने दीजिए। ज़्यादातर GIF को यही सेटिंग चाहिए होती है। अगर फ़ाइल बहुत बड़ी निकल आए, तो बाकी कुछ भी छूने से पहले चौड़ाई घटाइए, क्योंकि यही वह सेटिंग है जो दोहरा फ़ायदा देती है।
इस पेज का बाकी हिस्सा यह बताने के लिए है कि क्यों, क्योंकि असल में सबकी समस्या “मेरी GIF 14 MB की है” ही होती है, और कौन-सा बटन घुमाना है यह ज़ाहिर नहीं होता।
वीडियो से बनी GIF इतनी विशाल क्यों होती है
वीडियो कोडेक गति सहेजता है। वह हर दो-एक सेकंड में एक पूरी तस्वीर लिखता है और फिर बीच के हर फ़्रेम के लिए यह ब्योरा कि वह तस्वीर हिली कैसे: पिक्सलों का यह ब्लॉक चार कदम बाएँ खिसक गया, यह हिस्सा थोड़ा गहरा हो गया। पाँच सेकंड की क्लिप कुछ सौ किलोबाइट की हो सकती है, क्योंकि उसका ज़्यादातर हिस्सा उसी तस्वीर के बारे में निर्देश हैं जो आपके पास पहले से है।
GIF में इसमें से कुछ भी नहीं है। वह 1989 में पूरी हो चुकी थी, इनमें से कुछ भी होने से पहले। हर फ़्रेम एक तस्वीर है, जो अकेले, स्प्रेडशीट के स्क्रीनशॉट के लिए बनी योजना से कंप्रेस की गई है। इस फ़ॉर्मैट में कहीं भी गति का अनुमान लगाने वाली कोई चीज़ है ही नहीं, और उसे जोड़ने का कोई तरीका भी नहीं।
इसलिए जिस संख्या की उम्मीद रखनी चाहिए वह है वीडियो से दस गुना साइज़, और कोई कन्वर्टर आपको इससे बहला नहीं सकता। अच्छा कन्वर्टर इतना कर सकता है कि उसके ऊपर कुछ भी बेकार न गँवाए, और आपको वे तीन सेटिंग दे दे जो इसे असल में तय करती हैं।
वे तीन सेटिंग, और हर एक की कीमत
GIF के साइज़ की पूरी बात इस पर आकर टिकती है कि उसमें कितने पिक्सल हैं, यानी लंबाई गुणा दर गुणा एक फ़्रेम का क्षेत्रफल।
- हिस्सा — सीधा अनुपात। दोगुना लंबा यानी दोगुने फ़्रेम और करीब दोगुनी फ़ाइल। यही वह बात है जो ज़्यादातर लोग पहले से समझते हैं, और इस पर निर्मम होना पैसा वसूल है। जो GIF अपनी बात तीन सेकंड में कह देती है वह छोटी होने के साथ-साथ बेहतर GIF भी है।
- चौड़ाई — वर्ग अनुपात। चौड़ाई आधी करने से ऊँचाई भी उसी के साथ आधी हो जाती है, यानी पिक्सल चौथाई रह जाते हैं। 640 से 320 पर आने में आधे से कुछ कम नहीं बचता; करीब तीन-चौथाई बचता है। यही वह सेटिंग है जिसकी तरफ़ कोई पहले हाथ नहीं बढ़ाता और जो सबसे ज़्यादा देती है।
- फ़्रेम दर — सीधा अनुपात। दस फ़्रेम प्रति सेकंड, पंद्रह के दो-तिहाई साइज़ का होता है। और यही वह सेटिंग भी है जिसमें नुकसान सबसे ज़्यादा दिखता है, क्योंकि बहुत धीमी गति छोटी नहीं, टूटी हुई लगती है।
एक उदाहरण, हिसाब समेत। फ़ोन की क्लिप के छह सेकंड, उसके अपने 1080×1920 और 30 fps पर, यानी बीस लाख पिक्सल वाले 180 फ़्रेम: करीब 35 करोड़ पिक्सल, जो GIF नहीं, बंधक-संकट है। वही छह सेकंड 480 चौड़ाई और 12 fps पर, यानी 4,00,000 पिक्सल वाले 72 फ़्रेम, कुल मिलाकर 3 करोड़ और करीब बारहवाँ हिस्सा। और वह वैसी दिखती है जैसी लोगों के मन में GIF होती है।
कौन-सी फ़्रेम दर चुनें
यहाँ डिफ़ॉल्ट बारह है, और हैरान करने वाली अक्सरता से यही सही जवाब भी है। यह वही दर है जिसे हाथ से बनी एनिमेशन एक सदी से इस्तेमाल कर रही है: इतनी तेज़ कि आँख उसे लगातार गति की तरह पढ़ ले, और इतनी धीमी कि आप उन फ़्रेमों का दाम न चुकाएँ जो किसी को दिखते ही नहीं।
- 5–8 — स्लाइडशो जैसा एहसास। धीमे पैन या ऐसी स्क्रीन रिकॉर्डिंग के लिए ठीक जिसमें कुछ भी तेज़ी से नहीं हिलता।
- 10–15 — सामान्य। गति की तरह पढ़ा जाता है। बनाने लायक लगभग हर GIF यहीं आती है।
- 20–25 — चिकना, और 12 से मोटे तौर पर दोगुना साइज़, ऐसे फ़र्क के लिए जिसका नाम ज़्यादातर देखने वाले नहीं ले पाएँगे। तेज़ गति, किसी खेल की क्लिप, या ऐसी हर चीज़ के लिए पैसा वसूल जिसमें तेज़ पैन हो।
एक सख्त छत भी है जिसे जान लेना ही अच्छा है: GIF यह सहेजती है कि हर फ़्रेम स्क्रीन पर कितनी देर रहे, और वह भी सेकंड के सौवें हिस्सों में, और हर ब्राउज़र दो-सौवें से कम देरी को दस मानकर चलता है। इसलिए असली अधिकतम 50 फ़्रेम प्रति सेकंड है, और 100 माँगने वाली फ़ाइल चुपचाप 10 पर चलेगी। जो कन्वर्टर आपको 60 fps दे रहा है, वह या तो इसे अनदेखा कर रहा है या आपको चौंकाने वाला है।
256 रंग, और डिदरिंग किस काम की है
इस फ़ॉर्मैट की उम्र का दूसरा आधा हिस्सा: GIF ज़्यादा से ज़्यादा 256 रंगों की एक तालिका ढोती है, और हर पिक्सल उसी में की ओर इशारा करती एक संख्या है। वीडियो के फ़्रेम में एक करोड़ साठ लाख तक रंग होते हैं। उसमें से लगभग सब कुछ फेंक दिया जाता है, और GIF का दिखना ज़्यादातर इसी पर टिका है कि वह कैसे फेंका जाता है।
अच्छा कन्वर्टर किसी तयशुदा सेट के बजाय आपकी क्लिप के रंग गिनता है और उसी पर जँचने वाले 256 चुनता है। जंगल के शॉट को 256 हरे मिलते हैं; सूर्यास्त के शॉट को 256 नारंगी। यहाँ का टूल यही करता है, और सिर्फ़ पहले फ़्रेम पर नहीं, उस हिस्से के हर फ़्रेम पर, ताकि जो रंग सिर्फ़ आखिर में आता है उसे भी जगह मिल जाए।
डिदरिंग वह है जो वहाँ होता है जहाँ आपका ज़रूरी रंग फिर भी नदारद हो। पूरे हिस्से को सबसे नज़दीकी उपलब्ध रंग पर गोल कर देने के बजाय, जो चिकने आसमान को चार सपाट पट्टियों में बदल देता है और उनके बीच सीढ़ियाँ दिखने लगती हैं, वह सबसे नज़दीकी दो रंगों को एक बारीक पैटर्न में बारी-बारी रखता है, और आम देखने की दूरी से आपकी आँख उन्हें मिलाकर वही रंग बना लेती है जो वहाँ है ही नहीं।
- जो कुछ भी फ़ोटो जैसा हो, उसके लिए इसे चालू रहने दीजिए: आसमान, त्वचा, ग्रेडिएंट, छायाएँ, फ़िल्म।
- सपाट रंग के लिए इसे बंद कर दीजिए: स्क्रीन रिकॉर्डिंग, लकीरों वाली कला, लोगो, कार्टून, और ऐसी हर चीज़ जिसमें एक ही रंग के बड़े-बड़े हिस्से हों। वहाँ बचाने को कोई ग्रेडिएंट है ही नहीं, और उसके बिना फ़ाइल छोटी तथा साफ़ रहती है।
अगर आप कन्वर्टरों की तुलना करते हैं तो एक बात जानने लायक है। डिदर करने का ज़ाहिर तरीका error diffusion है, जिसे ज़्यादातर इमेज एडिटर इस्तेमाल करते हैं, और वह हर पिक्सल के नतीजे को उसके आसपास के पिक्सलों पर निर्भर बना देता है। एनिमेशन में इसका मतलब है कि जो बैकग्राउंड हिल ही नहीं रहा वह भी हर फ़्रेम में अलग ढंग से डिदर होता है, इसलिए वह साफ़-साफ़ रेंगता दिखता है, और हर फ़्रेम पूरा सहेजना पड़ता है क्योंकि तकनीकी रूप से हर पिक्सल बदल गया। दूसरा रास्ता, क्रमित (ordered) डिदर, सिर्फ़ इस पर निर्भर है कि पिक्सल है कहाँ, इसलिए स्थिर बैकग्राउंड बिलकुल स्थिर रहता है। यह टूल वही इस्तेमाल करता है, और इसीलिए उसकी फ़ाइलें शांत होने के साथ-साथ छोटी भी रहती हैं।
GIF कब बनानी ही नहीं चाहिए
यह पूछने लायक है, क्योंकि ईमानदार जवाब अक्सर “मत बनाइए” ही होता है। चुपचाप लूप होती MP4 या WebM उसी एनिमेशन की GIF के मुकाबले करीब दसवें हिस्से की होती है, चलती भी वैसे ही है, और अपलोड करने के बाद हर सोशल प्लैटफ़ॉर्म आपकी GIF को वैसे भी उसी में बदल देता है।
GIF वहीं रखिए जहाँ मंज़िल को सचमुच GIF ही चाहिए:
- ऐसी जगह जो सिर्फ़ तस्वीर लेती है, जैसे बहुत सारे चैट, फ़ोरम, विकी और ईमेल सॉफ़्टवेयर;
- कोई README या दस्तावेज़ीकरण पेज, जहाँ GIF वहीं की वहीं चल जाती है और वीडियो को प्लेयर चाहिए होता है;
- कोई स्लाइड डेक या ऐसा दस्तावेज़ जिसे ऑफ़लाइन भी चलते रहना है;
- कोई इमोजी, स्टिकर या प्रतिक्रिया, जो इतनी छोटी हो कि ऊपर लिखा साइज़ का सारा गणित बेमानी हो जाए।
जहाँ आवाज़ मायने रखती है, वहाँ सवाल खुद ही हल हो जाता है: GIF में कभी ऑडियो था ही नहीं और कभी होगा भी नहीं। इसके बजाय वीडियो ही काट लीजिए। वीडियो कटर उसमें से कोई हिस्सा एक भी फ़्रेम दोबारा एनकोड किए बिना निकाल देता है।
किसी साइज़ सीमा के नीचे आना
कोई भी GIF को कसता है, तो उसकी ज़्यादातर वजह दूसरे सिरे पर लगी कोई सीमा होती है। मोटे तौर पर इस क्रम में कि कौन कितना काटती है।
- ईमेल — पूरे संदेश के लिए 10 से 25 MB, और उसके आसपास का अटैचमेंट बीच में कहीं किसी के हाथों हटा या लौटा दिया जाता है। निशाना उससे काफ़ी नीचे रखिए।
- चैट और फ़ोरम — आम तौर पर 8 से 10 MB, और डाउनलोड के बजाय वहीं दिखने वाले प्रीव्यू के लिए कभी-कभी उससे बहुत कम।
- GitHub का README — हर फ़ाइल के लिए 10 MB, और दो-एक मेगाबाइट से ऊपर कुछ भी फ़ोन पर पेज को टूटा हुआ महसूस कराता है।
- स्टिकर और इमोजी के खाने — अक्सर कुछ सौ किलोबाइट, जिसका मतलब है छोटी चौड़ाई और छोटा हिस्सा, कम फ़्रेम दर नहीं।
जब आप सीमा से ऊपर हों, तो आज़माने का क्रम यह है: हिस्सा छोटा कीजिए, फिर चौड़ाई आधी कीजिए, फिर दर घटाइए, फिर डिदरिंग बंद कीजिए। पहली दो, बाद की दो के जोड़ से भी ज़्यादा देती हैं।
इसमें से किसी के लिए अपलोड की ज़रूरत नहीं
वीडियो को GIF में बदलने का मतलब है डिकोड करना, आकार घटाना, रंग गिनना और कंप्रेस करना, यानी चार ऐसी चीज़ें जो ब्राउज़र सालों से खुद कर सकता है। ऊपर लिंक किया टूल यह सब आपकी मशीन पर करता है। फ़ाइल आपकी डिस्क से पढ़ी जाती है, फ़्रेम आपका ब्राउज़र डिकोड करता है, और GIF मेमोरी में जोड़कर आपके डाउनलोड को सौंप दी जाती है।
यहाँ इसकी परवाह आम से ज़्यादा करनी चाहिए। लोग जिन क्लिप को GIF बनाते हैं वे निजी होती हैं, जैसे किसी पारिवारिक वीडियो का कोई पल, दफ़्तर की किसी चीज़ की स्क्रीन रिकॉर्डिंग, या किसी कॉल के कुछ सेकंड। जो कन्वर्टर उन्हें अपलोड करवाना चाहता है वह उनकी एक नकल माँग रहा है, और अब हाँ कहने की कोई तकनीकी वजह बची ही नहीं है।