यह पेज हिन्दी में दिखाया जा रहा है, क्योंकि आपका ब्राउज़र यही भाषा माँगता है।
इस पेज का कोड चालू नहीं हुआ।
index.html को सीधे किसी फ़ोल्डर से खोलने पर ब्राउज़र JavaScript मॉड्यूल रोक देता है, इसलिए कोई वीडियो चुनने पर कुछ नहीं होगा। इसके बजाय फ़ोल्डर को http पर सर्व कीजिए:
ऊपर फ़ाइल चुनते ही यह खुल जाएगा।तैयार — इंटरनेट काट दीजिए, यह फिर भी चलता रहेगा।इस ब्राउज़र में उपलब्ध नहीं (बाकी सब फिर भी चलता है)।ऑफ़लाइन कैश के लिए https:// या localhost चाहिए।यहाँ कैश नहीं हो सकता, पर अपलोड फिर भी कुछ नहीं होता।आपकी फ़ाइलें कहीं नहीं गईं। {total} फ़ाइलें लोड हुईं, और वे सब इसी साइट की अपनी हैं। {platform}किसी चीज़ ने {hosts} से संपर्क किया, और यह टूल ऐसा कभी नहीं करता। यह देखने लायक बात है। {platform}विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को न कोई फ़ाइल मिली, न उसका एक बाइट।विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को न कोई फ़ाइल मिली, न उसका एक बाइट।कुछ गड़बड़ हो गई: {detail}। दोबारा शुरू करने के लिए पेज फिर से लोड कीजिए।{count} फ़ाइल पढ़ी जा रही है…{count} फ़ाइलें पढ़ी जा रही हैं…कोई उदाहरण आज़माइएउदाहरण बनाया जा रहा है…यह ब्राउज़र उदाहरण नहीं बना सका। इसके बजाय कोई फ़ाइल चुनिए।
● यह टूल वीडियो कभी अपलोड नहीं करता। यहाँ कोई सर्वर है ही नहीं।
हर फ़्रेम आपका अपना ब्राउज़र, आपके अपने हार्डवेयर पर पढ़ता है, उसका आकार बदलता है, उसे क्वांटाइज़ करता है और लिखता है। यहाँ कुछ भी न कुछ ला सकता है, न भेज सकता है, क्योंकि इस टूल में कोई नेटवर्क सुविधा है ही नहीं। और मान लीजिए कोई रास्ता होता भी, तो इस पेज के दूसरी तरफ़ ऐसा कोई सर्वर ही नहीं है जिसे वीडियो भेजा जा सके।
✗ कोई अपलोड नहीं
✗ कोई खाता नहीं
✗ कोई वॉटरमार्क नहीं
✓ कोई भी लंबाई
✓ ऑफ़लाइन चलता है
लाइव जाँच:जाँच जारी…
ऑफ़लाइन:जाँच जारी…
हमारी बात पर भरोसा मत कीजिए। DevTools खोलिए, Network टैब पर नज़र रखिए, और कोई GIF बनाइए। एक भी रिक्वेस्ट में न कोई फ़्रेम जाता है, न फ़ाइल का नाम, न आपकी चुनी फ़ाइल का एक बाइट। या फिर इंटरनेट काट दीजिए और तब भी कोई GIF बनाकर देखिए। जो टूल आपका वीडियो बदलने के लिए कहीं भेजता, वह वहीं रुक जाता।
प्राइवेसी का यह दावा कैसे जाँचा जा सकता है
आपके वीडियो के पास जाने को कोई जगह ही नहीं है। यह पेज जिन-जिन पतों से संपर्क कर सकता है, Content-Security-Policy उन सबके नाम गिना देती है, और उनमें से एक भी इस साइट का नहीं है। यहाँ कोई ऐसा एंडपॉइंट है ही नहीं जहाँ आपकी फ़ाइल जमा की जा सके, और कोड में ऐसा कुछ भी नहीं जो उसे भेजता, अगर होता भी।
यहाँ कुछ भी कहीं से कुछ नहीं लाता। इस टूल में कोई नेटवर्क सुविधा है ही नहीं: न चिपकाने को कोई पता, न डाउनलोड करने को कुछ, न पहली बार इस्तेमाल पर बाहर से मँगाया जाने वाला कोई इंजन। आपके वीडियो को छूने वाला हर बाइट पेज लोड होते ही इसी ऑरिजिन से आया था।
डिकोडिंग स्थानीय है। फ़्रेम आपके अपने ब्राउज़र के WebCodecs से गुज़रते हैं, या उसी प्लेबैक इंजन से जो आपको यह क्लिप वैसे भी दिखाता। किसका इस्तेमाल हुआ, यह पेज के सिरे पर लिखा होता है, क्योंकि इससे बदल जाता है कि फ़्रेम चुने कैसे जाते हैं, और आपको यह दिखना चाहिए।
GIF यहीं लिखी जाती है, ऐसे कोड से जिसे आप पढ़ सकते हैं। पैलेट, डिदरिंग और LZW कंप्रेशन, तीनों इस टूल के अपने फ़ोल्डर की करीब छह सौ पंक्तियाँ भर हैं। न कोई एनकोडर सेवा, न चलते वक्त बाहर से लाई जाने वाली कोई लाइब्रेरी, और इन सबमें कहीं ऐसी जगह भी नहीं जहाँ से कोई तस्वीर भेजी जा सके।
Google क्या लोड करता है, और उसे क्या नहीं दिया जाता। विज्ञापन और माप वाली स्क्रिप्ट Google से आती हैं। इनमें से किसी को भी आपके वीडियो के बारे में कुछ नहीं सौंपा जाता: न फ़ाइल, न फ़्रेम, न नाम, न साइज़, न लंबाई, न वह हिस्सा जिस पर आपने निशान लगाया। पढ़ने, नमूना लेने, क्वांटाइज़ करने या एनकोड करने वाली हर पंक्ति इसी ऑरिजिन से आती है और रिपॉज़िटरी में दर्ज है।
दान का बटन क्या लोड करता है, और उसे क्या नहीं दिया जाता। हेडर में मौजूद “Buy me a coffee” बटन को cdnjs.buymeacoffee.com से आई एक स्क्रिप्ट बनाती है, और उसके अक्षर Google Fonts से आते हैं। वह एक लिंक है और उससे ज़्यादा कुछ नहीं: वह किसी विज़िट की खबर नहीं करता, और उसे आपके या आपके वीडियो के बारे में कुछ नहीं दिया जाता।
यह ऑफ़लाइन भी चलता है। नेटवर्क काट दीजिए और इस पेज की हर चीज़ काम करती रहेगी। सबसे आसान सबूत यही है।
खुद जाँच लीजिए। ऊपर लिखी किसी भी बात को भरोसे पर मानने की ज़रूरत नहीं। यह पेज रिपॉज़िटरी के टेम्पलेट और कॉन्फ़िग से बनता है, एक ऐसी बिल्ड स्क्रिप्ट के ज़रिए जिसे आप पढ़ भी सकते हैं और खुद चला भी सकते हैं। उसका नतीजा dist ब्रांच पर कमिट रहता है, यानी जो सर्व हो रहा है और सोर्स से बिल्ड करने पर जो बनता है, दोनों का फ़र्क आप खुद देख सकते हैं:
सबसे पहले पढ़ने लायक फ़ाइलें ये हैं — Content-Security-Policy के लिए config/site.toml, src/frames.js उन दो तरीकों के लिए जिनसे वीडियो में से फ़्रेम पढ़े जाते हैं, src/quantize.js पैलेट के लिए, और src/gif.js खुद फ़ाइल के लिए, LZW समेत। इनमें से कोई भी ऐसा कुछ आयात नहीं करता जो कोई रिक्वेस्ट कर सके।
अगर आपके दफ़्तर का सुरक्षा सॉफ़्टवेयर अपलोड की चेतावनी दे। वह उस पल पर नज़र रखता है जब ब्राउज़र में फ़ाइल चुनी जाती है, और यह नहीं जान सकता कि पन्ना उसे भेजने वाला है या नहीं — इसलिए चुनने पर ही चेतावनी देता है। यहाँ से कुछ नहीं भेजा जाता: ब्राउज़र के डेवलपर टूल खोलिए, Network पर जाइए, और एक फ़ाइल चुनिए। उसे ले जाने वाला कोई अनुरोध नहीं है, और पन्ने की अपनी स्थानीय झलक के अलावा कोई अनुरोध ही नहीं। यही जाँच आपकी IT टीम आधे मिनट में कर सकती है।
1 कोई वीडियो चुनिए
फ़ाइल
—
साइज़
—
फ़्रेम
—
लंबाई
—
वीडियो
—
किससे पढ़ा गया
—
2 हिस्सा चुनिए
क्लिप चलाइए और जो हिस्सा चाहिए उस पर निशान लगाइए। I शुरुआत को वहाँ रख देता है जहाँ प्लेहेड है, O अंत को, और पट्टी की दोनों मुठियाँ खींची भी जा सकती हैं।
0:00.000—
3 आकार और फ़्रेम दर
चौड़ाई ऊँचाई अपने आप चली आती है, इसलिए आकार कभी नहीं बदलता। GIF की कीमत चौड़ाई ही लेती है: आधी चौड़ाई यानी चौथाई पिक्सल।
ठीक चौड़ाई पिक्सलों में, 16 और 1920 के बीच।
फ़्रेम प्रति सेकंड यह वीडियो की अपनी दर नहीं है: फ़्रेम उसमें से नमूने के तौर पर लिए जाते हैं। बारह गति की तरह पढ़ा जाता है; बीस से ऊपर फ़ाइल उतनी तेज़ी से बढ़ती है जितनी तेज़ी से चिकनाहट दिखती नहीं।
डिदरिंग जहाँ सही रंग नदारद हो, वहाँ पैलेट के दो रंग मिला देता है। क्रमित, इसलिए स्थिर बैकग्राउंड झिलमिलाता नहीं।
हमेशा लूप कीजिए बंद रहने पर यह एक बार चलकर रुक जाती है।
फ़ाइल पढ़ी जा रही है…वह फ़ाइल खोली नहीं जा सकी।यह ब्राउज़र इस फ़ाइल को चलाता नहीं, इसलिए पूर्वावलोकन नहीं है। फ़्रेम फिर भी पढ़े और बदले जाते हैं — नीचे समयों से हिस्सा चुन लीजिए।{width} x {height}अज्ञात{codec} ({entry}){codec} ({entry}), {degrees} डिग्री घुमाया हुआब्राउज़र के अपने प्लेयर से पढ़ा गयाWebCodecs, फ़्रेम-दर-फ़्रेमप्लेयर, हर फ़्रेम पर एक छलाँग{from} से {to} तक ({span} से){width} x {height} ({fromWidth} x {fromHeight} से){low} से {high} तकयह खुद वीडियो ({px} px) से चौड़ा है, और इससे वह ब्योरा नहीं आ जाता जो कभी था ही नहीं — सिर्फ़ बाइट बढ़ते हैं।रंग-पट्टी चुनते समय हर फ़्रेम याददाश्त में रहता है, जो इन सेटिंग्स पर लगभग {size} है।यह उससे ज़्यादा है जितना यह टूल आज़माएगा — छोटा हिस्सा, कम चौड़ाई या कम फ़्रेम दर इसे ठीक कर देगी।छोटा हिस्सा, कम चौड़ाई या कम फ़्रेम दर, तीनों इसे नीचे लाते हैं।{total} में से फ़्रेम {done} पढ़ा जा रहा है{total} में से फ़्रेम {done} लिखा जा रहा है{n} फ़्रेम{n} फ़्रेम{frames} ({n} एक जैसे, छोड़े गए){n} fps{n} रंगवह हिस्सा इतना छोटा है कि उसमें से एक फ़्रेम भी नहीं निकलता।इसके लिए उतनी याददाश्त चाहिए जितनी यह टूल किसी ब्राउज़र से नहीं माँगेगा। हिस्सा छोटा कीजिए, या चौड़ाई या फ़्रेम दर घटाइए।GIF बनाते समय कुछ गड़बड़ हो गई।इस फ़ाइल से कोई फ़्रेम डीकोड नहीं हो सका।ब्राउज़र बीच में ही इस फ़ाइल को चला नहीं पाया।{a} {b}{a} · {b}{n} KB{n} MB{n} GBफ़ाइल एक फ़्रेम के बीचोंबीच खत्म हो जाती है।H.264 का कॉन्फ़िगरेशन रिकॉर्ड बहुत छोटा है।HEVC का कॉन्फ़िगरेशन रिकॉर्ड बहुत छोटा है।AV1 का कॉन्फ़िगरेशन रिकॉर्ड बहुत छोटा है।सैंपल के आकार एक सिकुड़ी हुई तालिका में हैं, जिसे यह रीडर नहीं खोलता।सैंपल तालिकाएँ अधूरी हैं।चंक तालिका खाली है।उस ट्रैक में एक भी सैंपल नहीं है।वीडियो ट्रैक की सैंपल तालिकाएँ गायब हैं।वीडियो ट्रैक में सैंपल का विवरण नहीं है।वीडियो के सैंपल का विवरण खाली है।वीडियो ट्रैक एन्क्रिप्टेड है।यह वीडियो “{type}” के रूप में रखा गया है, और यह रीडर उसे नहीं जानता।“{type}” ट्रैक अपने साथ कोई डिकोडर कॉन्फ़िगरेशन नहीं ले जाता।यह न MP4 फ़ाइल है, न MOV।फ़ाइल में मूवी हेडर नहीं है।इस फ़ाइल में ऐसा कोई वीडियो ट्रैक नहीं जिसे यह रीडर काम में ले सके।वीडियो ट्रैक का कोई टाइमस्केल नहीं है।इस फ़ाइल के फ़्रैगमेंट में इसके वीडियो ट्रैक का एक भी फ़्रेम नहीं है।फ़ाइल MP4 की तरह पढ़ी नहीं जा सकी।यह फ़ॉर्मैट उनमें से नहीं जिन्हें यह ब्राउज़र चलाता है।इस फ़ाइल की बनावट वैसी नहीं जैसी यहाँ का रीडर समझता है।यह ब्राउज़र {codec} को सीधे डिकोड नहीं करता।इस ब्राउज़र में WebCodecs नहीं है, इसलिए फ़्रेम एक-एक करके डिकोड नहीं किए जा सकते।यह फ़ाइल घुमाकर रखी गई है, और यहाँ का रीडर तथा ब्राउज़र का प्लेयर उस घुमाव पर एकमत नहीं हैं।यह ब्राउज़र इस फ़ाइल को नहीं खोल सकता। {reason}{reason} इसीलिए इसके फ़्रेम प्लेयर को हर पल पर ले जाकर इकट्ठे किए जाते हैं। यह धीमा है, और हर छलाँग किस फ़्रेम पर गिरेगी यह ब्राउज़र तय करता है, इसलिए तेज़ चलने वाला हिस्सा कहीं-कहीं एक फ़्रेम इधर-उधर निकल सकता है।आपका वीडियो कहीं नहीं गया। {total} फ़ाइलें लोड हुईं। {platform}किसी चीज़ ने {hosts} से संपर्क किया, और यह टूल ऐसा कभी नहीं करता। {platform}विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को कोई फ़ाइल नहीं मिली।विज्ञापन, माप और दान वाले बटन के लिए साइट की अपनी स्क्रिप्ट {hosts} होस्ट से आईं। उनमें से किसी को कोई फ़ाइल नहीं मिली।
क्या इससे काम बन गया?
क्या गड़बड़ हुई?
शुक्रिया — इससे मदद मिलती है।
सिर्फ़ आपका जवाब भेजा जाता है, वह भी तभी जब आप बटन दबाते हैं। आपकी फ़ाइल, उसका नाम या उससे जुड़ी कोई बात कभी नहीं।
# वीडियो से GIF — वीडियो को GIF में बदलिए
हिस्सा चुनिए, साइज़ चुनिए, और फ़्रेम दर चुनिए।
> MP4, MOV या WebM के किसी हिस्से को चलती हुई GIF बना दीजिए। हिस्सा, चौड़ाई और फ़्रेम दर चुनिए; फ़्रेम आपके ब्राउज़र में पढ़े जाते हैं और GIF भी वहीं लिखी जाती है। कुछ अपलोड नहीं होता।
यह पेज एक इंटरैक्टिव टूल है जो पूरी तरह आपके ब्राउज़र में चलता है, https://abox.tools/hi/video-to-gif/ पर — आप इसे जो भी देते हैं, वह कहीं अपलोड नहीं होता। आगे वह सब कुछ है जो यह पेज इस टूल के बारे में शब्दों में कहता है; इसे इस्तेमाल करने के लिए यह पता खोलें।
## यह टूल वीडियो **कभी अपलोड नहीं करता**। यहाँ कोई सर्वर है ही नहीं।
हर फ़्रेम आपका अपना ब्राउज़र, आपके अपने हार्डवेयर पर पढ़ता है, उसका आकार बदलता है, उसे क्वांटाइज़ करता है और लिखता है। यहाँ कुछ भी न कुछ ला सकता है, न भेज सकता है, क्योंकि इस टूल में कोई नेटवर्क सुविधा है ही नहीं। और मान लीजिए कोई रास्ता होता भी, तो इस पेज के दूसरी तरफ़ ऐसा कोई सर्वर ही नहीं है जिसे वीडियो भेजा जा सके।
- ✗ कोई अपलोड नहीं
- ✗ कोई खाता नहीं
- ✗ कोई वॉटरमार्क नहीं
- ✓ कोई भी लंबाई
- ✓ ऑफ़लाइन चलता है
## वीडियो को GIF में कैसे बदलें
1. **कोई वीडियो चुनिए।** MP4, MOV, M4V या WebM पिकर पर छोड़ दीजिए, या हाथ से चुन लीजिए। ब्राउज़र उसे सीधे आपकी डिस्क से पढ़ता है; इस दौरान कुछ भी कहीं नहीं भेजा जाता।
2. **हिस्से पर निशान लगाइए।** क्लिप चलाइए और जहाँ उसे शुरू होना चाहिए वहाँ `I` दबाइए तथा जहाँ खत्म होना चाहिए वहाँ `O`, या फिर पट्टी पर बनी मुठियाँ खींच दीजिए। GIF कुछ ही सेकंड की होती है, और बाकी दोनों से कहीं ज़्यादा यही सेटिंग तय करती है कि फ़ाइल छोटी रहेगी या विशाल हो जाएगी।
3. **चौड़ाई और फ़्रेम दर चुनिए।** 480 पिक्सल चौड़ाई और बारह फ़्रेम प्रति सेकंड, GIF के ज़्यादातर कामों के लिए ठीक बैठते हैं। चौड़ाई आधी कीजिए तो पिक्सल चौथाई रह जाते हैं; बारह फ़्रेम प्रति सेकंड गति की तरह ही पढ़े जाते हैं, बिना उनकी कीमत चुकाए जो किसी को दिखते ही नहीं।
4. **इसे बनाइए, और डाउनलोड कीजिए।** फ़्रेम पढ़े जाते हैं, पूरे एनिमेशन के लिए 256 रंगों का एक ही पैलेट चुना जाता है, और हर फ़्रेम में तस्वीर का सिर्फ़ वही हिस्सा लिखा जाता है जो बदला। तैयार होते ही वह पेज पर चलने लगती है, और डाउनलोड में आपको वही फ़ाइल मिलती है।
## विस्तार से
[वीडियो को GIF में कैसे बदलें](https://abox.tools/hi/guides/turn-a-video-into-a-gif/): कौन-सा हिस्सा, कौन-सी चौड़ाई और कौन-सी फ़्रेम दर चुनें, वीडियो से बनी GIF वीडियो से दस गुना बड़ी क्यों होती है, और GIF का इस्तेमाल करना कब ठीक है।
## बॉक्स में और भी टूल
- [GIF मेकर](https://abox.tools/hi/gif-maker/): तस्वीरों के एक सेट को एक ही एनिमेशन बना दीजिए।
- [GIF फ़्रेम स्प्लिटर](https://abox.tools/hi/split-gif/): हर फ़्रेम अलग, अपनी PNG फ़ाइल में।
- [GIF एनालाइज़र](https://abox.tools/hi/gif-analyzer/): फ़्रेम, देरी, पैलेट, और हर बाइट कहाँ गया।
- [तस्वीरों से वीडियो](https://abox.tools/hi/images-to-video/): तस्वीरों के एक फ़ोल्डर को वीडियो बना दीजिए।
## सवाल
### क्या मेरा वीडियो कहीं अपलोड होता है?
नहीं। उसे आपका अपना ब्राउज़र, आपके अपने हार्डवेयर पर पढ़ता है, उसका नमूना लेता है और उसे बदलता है। इस टूल का कोई सर्वर वाला हिस्सा है ही नहीं, और पेज की `Content-Security-Policy` उन सारे पतों के नाम गिना देती है जिनसे यह संपर्क कर सकता है, जिनमें से एक भी इस साइट का नहीं है। सिर्फ़ बता देने से बात न बने, तो इंटरनेट काटकर कोई GIF बनाकर देख लीजिए।
### मैं कौन-कौन से वीडियो फ़ॉर्मैट बदल सकता हूँ?
MP4, M4V और MOV सीधे पढ़े जाते हैं, उनके भीतर जो भी हो, यानी H.264, HEVC, AV1 या VP9, बशर्ते आपका ब्राउज़र उस कोडेक को डिकोड कर सके। बाकी जो कुछ आपका ब्राउज़र चला सकता है, सबसे ज़ाहिर तौर पर WebM, उसके लिए प्लेयर को हर पल पर ले जाकर पढ़ा जाता है। यह धीमा है, और इस बारे में थोड़ा कम सटीक भी कि कौन-सा फ़्रेम कहाँ गिरेगा। और जिस फ़ाइल को ब्राउज़र न पढ़ सके न चला सके, यानी व्यवहार में AVI, WMV, FLV और ज़्यादातर MKV, उसे बीच रास्ते नाकाम होने के बजाय एक संदेश के साथ मना कर दिया जाता है।
### मेरी GIF इतनी बड़ी क्यों है?
क्योंकि GIF 1987 का फ़ॉर्मैट है जो गति नहीं, पूरी-पूरी तस्वीरें सहेजता है। पाँच सेकंड की क्लिप से ऐसी GIF बनाने का कोई रास्ता ही नहीं जो उतनी छोटी हो जितनी वह पाँच सेकंड की MP4 थी जिससे वह बनी। वीडियो से बनी GIF आम तौर पर वीडियो से दस गुना बड़ी होती है। इसे असल में तीन सेटिंग तय करती हैं, और इसी क्रम में। हिस्सा कितना लंबा है, तस्वीर कितनी चौड़ी है, और एक सेकंड में कितने फ़्रेम हैं। चौड़ाई आधी कीजिए तो पिक्सल चौथाई रह जाते हैं, और कीमत पिक्सल ही लेते हैं।
### सिर्फ़ 256 रंग क्यों?
फ़ॉर्मैट यही है: GIF ज़्यादा से ज़्यादा 256 रंगों की एक तालिका ढोती है और हर पिक्सल को उसी में की एक संख्या के रूप में सहेजती है। यह टूल उन 256 को इस तरह चुनता है कि आपके हिस्से के हर फ़्रेम के रंग गिने जाएँ और उन्हें 256 समूहों में बाँट दिया जाए, यानी median cut वाला मानक तरीका, ताकि पैलेट रंगों के किसी तयशुदा सेट के बजाय आपकी क्लिप पर फ़िट बैठे। जहाँ कोई रंग नदारद हो, वहाँ डिदरिंग सबसे नज़दीकी दो रंग मिला देती है, ताकि कोई ग्रेडिएंट धारियाँ बनने के बजाय ग्रेडिएंट ही बना रहे।
### डिदरिंग वाली सेटिंग करती क्या है?
वह थोड़े-से शोर के बदले बहुत सारी पट्टियाँ बचा लेती है। चालू रहने पर वह आसमान, जो वरना चार सपाट पट्टियाँ बन जाता, ग्रेडिएंट ही बना रहता है है, बस एक हल्की बनावट और थोड़ी बड़ी फ़ाइल की कीमत पर। बंद रहने पर तस्वीर ज़्यादा सपाट और फ़ाइल छोटी रहती है, जो स्क्रीन रिकॉर्डिंग, लकीरों वाली कला और पहले से सपाट रंगों से बनी हर चीज़ पर जँचता है। यहाँ इस्तेमाल होने वाला डिदर error-diffusion वाला नहीं, क्रमित (ordered) है, इसलिए न बदलने वाला बैकग्राउंड फ़्रेमों के बीच झिलमिलाने के बजाय बिलकुल स्थिर रहता है।
### क्या लंबाई या साइज़ पर कोई सीमा है?
सीमा हिस्से पर है, और वह किसी नियम से नहीं, मेमोरी से आती है। पैलेट चुनते वक्त उसका हर फ़्रेम एक साथ थामे रखा जाता है, इसलिए पेज हिसाब लगा लेता है कि आपकी सेटिंग की कीमत क्या पड़ेगी और शुरू करने से पहले बता देता है। वह टैब को मेमोरी खत्म होकर गायब हो जाने देने के बजाय मना कर देता है। छोटा हिस्सा, कम चौड़ाई या कम फ़्रेम दर, तीनों उसे नीचे ले आते हैं।
### क्या इसमें आवाज़ बची रहती है?
GIF आवाज़ ढो ही नहीं सकती। इस फ़ॉर्मैट का ऐसा कोई संस्करण है ही नहीं जिसमें ऑडियो हो, और वेब ने GIF की जगह ज़्यादातर चुपचाप लूप होते वीडियो को इसीलिए रखा। आवाज़ मायने रखती हो, तो वीडियो ही रखिए, और [वीडियो कटर](https://abox.tools/hi/trim-video/) उसमें से कोई हिस्सा एक भी फ़्रेम दोबारा एनकोड किए बिना काट देगा।
### क्या यह मुफ़्त है, और क्या मुझे खाता चाहिए?
यह मुफ़्त है, और यहाँ न कोई खाता है, न साइन-इन, न ट्रायल, न वॉटरमार्क। साइट पर विज्ञापन हैं, और वही इसका खर्च उठाते हैं; विज्ञापनों को आपके वीडियो के बारे में कुछ नहीं दिया जाता।
## प्राइवेसी का यह दावा कैसे जाँचा जा सकता है
- **आपके वीडियो के पास जाने को कोई जगह ही नहीं है।** यह पेज जिन-जिन पतों से संपर्क कर सकता है, Content-Security-Policy उन सबके नाम गिना देती है, और उनमें से एक भी इस साइट का नहीं है। यहाँ कोई ऐसा एंडपॉइंट है ही नहीं जहाँ आपकी फ़ाइल जमा की जा सके, और कोड में ऐसा कुछ भी नहीं जो उसे भेजता, अगर होता भी।
- **यहाँ कुछ भी कहीं से कुछ नहीं लाता।** इस टूल में कोई नेटवर्क सुविधा है ही नहीं: न चिपकाने को कोई पता, न डाउनलोड करने को कुछ, न पहली बार इस्तेमाल पर बाहर से मँगाया जाने वाला कोई इंजन। आपके वीडियो को छूने वाला हर बाइट पेज लोड होते ही इसी ऑरिजिन से आया था।
- **डिकोडिंग स्थानीय है।** फ़्रेम आपके अपने ब्राउज़र के WebCodecs से गुज़रते हैं, या उसी प्लेबैक इंजन से जो आपको यह क्लिप वैसे भी दिखाता। किसका इस्तेमाल हुआ, यह पेज के सिरे पर लिखा होता है, क्योंकि इससे बदल जाता है कि फ़्रेम चुने कैसे जाते हैं, और आपको यह दिखना चाहिए।
- **GIF यहीं लिखी जाती है, ऐसे कोड से जिसे आप पढ़ सकते हैं।** पैलेट, डिदरिंग और LZW कंप्रेशन, तीनों इस टूल के अपने फ़ोल्डर की करीब छह सौ पंक्तियाँ भर हैं। न कोई एनकोडर सेवा, न चलते वक्त बाहर से लाई जाने वाली कोई लाइब्रेरी, और इन सबमें कहीं ऐसी जगह भी नहीं जहाँ से कोई तस्वीर भेजी जा सके।
- **Google क्या लोड करता है, और उसे क्या नहीं दिया जाता।** विज्ञापन और माप वाली स्क्रिप्ट Google से आती हैं। इनमें से किसी को भी आपके वीडियो के बारे में कुछ नहीं सौंपा जाता: न फ़ाइल, न फ़्रेम, न नाम, न साइज़, न लंबाई, न वह हिस्सा जिस पर आपने निशान लगाया। पढ़ने, नमूना लेने, क्वांटाइज़ करने या एनकोड करने वाली हर पंक्ति इसी ऑरिजिन से आती है और रिपॉज़िटरी में दर्ज है।
- **दान का बटन क्या लोड करता है, और उसे क्या नहीं दिया जाता।** हेडर में मौजूद “Buy me a coffee” बटन को cdnjs.buymeacoffee.com से आई एक स्क्रिप्ट बनाती है, और उसके अक्षर Google Fonts से आते हैं। वह एक लिंक है और उससे ज़्यादा कुछ नहीं: वह किसी विज़िट की खबर नहीं करता, और उसे आपके या आपके वीडियो के बारे में कुछ नहीं दिया जाता।
- **यह ऑफ़लाइन भी चलता है।** नेटवर्क काट दीजिए और इस पेज की हर चीज़ काम करती रहेगी। सबसे आसान सबूत यही है।
**खुद जाँच लीजिए।** ऊपर लिखी किसी भी बात को भरोसे पर मानने की ज़रूरत नहीं। यह पेज रिपॉज़िटरी के टेम्पलेट और कॉन्फ़िग से बनता है, एक ऐसी बिल्ड स्क्रिप्ट के ज़रिए जिसे आप पढ़ भी सकते हैं और खुद चला भी सकते हैं। उसका नतीजा `dist` ब्रांच पर कमिट रहता है, यानी जो सर्व हो रहा है और सोर्स से बिल्ड करने पर जो बनता है, दोनों का फ़र्क आप खुद देख सकते हैं: https://github.com/A-Box-of-Tools/website
सबसे पहले पढ़ने लायक फ़ाइलें ये हैं — Content-Security-Policy के लिए `config/site.toml`, `src/frames.js` उन दो तरीकों के लिए जिनसे वीडियो में से फ़्रेम पढ़े जाते हैं, `src/quantize.js` पैलेट के लिए, और `src/gif.js` खुद फ़ाइल के लिए, LZW समेत। इनमें से कोई भी ऐसा कुछ आयात नहीं करता जो कोई रिक्वेस्ट कर सके।
वीडियो को GIF में कैसे बदलें
कोई वीडियो चुनिए। MP4, MOV, M4V या WebM पिकर पर छोड़ दीजिए, या हाथ से चुन लीजिए। ब्राउज़र उसे सीधे आपकी डिस्क से पढ़ता है; इस दौरान कुछ भी कहीं नहीं भेजा जाता।
हिस्से पर निशान लगाइए। क्लिप चलाइए और जहाँ उसे शुरू होना चाहिए वहाँ I दबाइए तथा जहाँ खत्म होना चाहिए वहाँ O, या फिर पट्टी पर बनी मुठियाँ खींच दीजिए। GIF कुछ ही सेकंड की होती है, और बाकी दोनों से कहीं ज़्यादा यही सेटिंग तय करती है कि फ़ाइल छोटी रहेगी या विशाल हो जाएगी।
चौड़ाई और फ़्रेम दर चुनिए। 480 पिक्सल चौड़ाई और बारह फ़्रेम प्रति सेकंड, GIF के ज़्यादातर कामों के लिए ठीक बैठते हैं। चौड़ाई आधी कीजिए तो पिक्सल चौथाई रह जाते हैं; बारह फ़्रेम प्रति सेकंड गति की तरह ही पढ़े जाते हैं, बिना उनकी कीमत चुकाए जो किसी को दिखते ही नहीं।
इसे बनाइए, और डाउनलोड कीजिए। फ़्रेम पढ़े जाते हैं, पूरे एनिमेशन के लिए 256 रंगों का एक ही पैलेट चुना जाता है, और हर फ़्रेम में तस्वीर का सिर्फ़ वही हिस्सा लिखा जाता है जो बदला। तैयार होते ही वह पेज पर चलने लगती है, और डाउनलोड में आपको वही फ़ाइल मिलती है।
विस्तार से
वीडियो को GIF में कैसे बदलेंकौन-सा हिस्सा, कौन-सी चौड़ाई और कौन-सी फ़्रेम दर चुनें, वीडियो से बनी GIF वीडियो से दस गुना बड़ी क्यों होती है, और GIF का इस्तेमाल करना कब ठीक है।
नहीं। उसे आपका अपना ब्राउज़र, आपके अपने हार्डवेयर पर पढ़ता है, उसका नमूना लेता है और उसे बदलता है। इस टूल का कोई सर्वर वाला हिस्सा है ही नहीं, और पेज की Content-Security-Policy उन सारे पतों के नाम गिना देती है जिनसे यह संपर्क कर सकता है, जिनमें से एक भी इस साइट का नहीं है। सिर्फ़ बता देने से बात न बने, तो इंटरनेट काटकर कोई GIF बनाकर देख लीजिए।
मैं कौन-कौन से वीडियो फ़ॉर्मैट बदल सकता हूँ?
MP4, M4V और MOV सीधे पढ़े जाते हैं, उनके भीतर जो भी हो, यानी H.264, HEVC, AV1 या VP9, बशर्ते आपका ब्राउज़र उस कोडेक को डिकोड कर सके। बाकी जो कुछ आपका ब्राउज़र चला सकता है, सबसे ज़ाहिर तौर पर WebM, उसके लिए प्लेयर को हर पल पर ले जाकर पढ़ा जाता है। यह धीमा है, और इस बारे में थोड़ा कम सटीक भी कि कौन-सा फ़्रेम कहाँ गिरेगा। और जिस फ़ाइल को ब्राउज़र न पढ़ सके न चला सके, यानी व्यवहार में AVI, WMV, FLV और ज़्यादातर MKV, उसे बीच रास्ते नाकाम होने के बजाय एक संदेश के साथ मना कर दिया जाता है।
मेरी GIF इतनी बड़ी क्यों है?
क्योंकि GIF 1987 का फ़ॉर्मैट है जो गति नहीं, पूरी-पूरी तस्वीरें सहेजता है। पाँच सेकंड की क्लिप से ऐसी GIF बनाने का कोई रास्ता ही नहीं जो उतनी छोटी हो जितनी वह पाँच सेकंड की MP4 थी जिससे वह बनी। वीडियो से बनी GIF आम तौर पर वीडियो से दस गुना बड़ी होती है। इसे असल में तीन सेटिंग तय करती हैं, और इसी क्रम में। हिस्सा कितना लंबा है, तस्वीर कितनी चौड़ी है, और एक सेकंड में कितने फ़्रेम हैं। चौड़ाई आधी कीजिए तो पिक्सल चौथाई रह जाते हैं, और कीमत पिक्सल ही लेते हैं।
सिर्फ़ 256 रंग क्यों?
फ़ॉर्मैट यही है: GIF ज़्यादा से ज़्यादा 256 रंगों की एक तालिका ढोती है और हर पिक्सल को उसी में की एक संख्या के रूप में सहेजती है। यह टूल उन 256 को इस तरह चुनता है कि आपके हिस्से के हर फ़्रेम के रंग गिने जाएँ और उन्हें 256 समूहों में बाँट दिया जाए, यानी median cut वाला मानक तरीका, ताकि पैलेट रंगों के किसी तयशुदा सेट के बजाय आपकी क्लिप पर फ़िट बैठे। जहाँ कोई रंग नदारद हो, वहाँ डिदरिंग सबसे नज़दीकी दो रंग मिला देती है, ताकि कोई ग्रेडिएंट धारियाँ बनने के बजाय ग्रेडिएंट ही बना रहे।
डिदरिंग वाली सेटिंग करती क्या है?
वह थोड़े-से शोर के बदले बहुत सारी पट्टियाँ बचा लेती है। चालू रहने पर वह आसमान, जो वरना चार सपाट पट्टियाँ बन जाता, ग्रेडिएंट ही बना रहता है है, बस एक हल्की बनावट और थोड़ी बड़ी फ़ाइल की कीमत पर। बंद रहने पर तस्वीर ज़्यादा सपाट और फ़ाइल छोटी रहती है, जो स्क्रीन रिकॉर्डिंग, लकीरों वाली कला और पहले से सपाट रंगों से बनी हर चीज़ पर जँचता है। यहाँ इस्तेमाल होने वाला डिदर error-diffusion वाला नहीं, क्रमित (ordered) है, इसलिए न बदलने वाला बैकग्राउंड फ़्रेमों के बीच झिलमिलाने के बजाय बिलकुल स्थिर रहता है।
क्या लंबाई या साइज़ पर कोई सीमा है?
सीमा हिस्से पर है, और वह किसी नियम से नहीं, मेमोरी से आती है। पैलेट चुनते वक्त उसका हर फ़्रेम एक साथ थामे रखा जाता है, इसलिए पेज हिसाब लगा लेता है कि आपकी सेटिंग की कीमत क्या पड़ेगी और शुरू करने से पहले बता देता है। वह टैब को मेमोरी खत्म होकर गायब हो जाने देने के बजाय मना कर देता है। छोटा हिस्सा, कम चौड़ाई या कम फ़्रेम दर, तीनों उसे नीचे ले आते हैं।
क्या इसमें आवाज़ बची रहती है?
GIF आवाज़ ढो ही नहीं सकती। इस फ़ॉर्मैट का ऐसा कोई संस्करण है ही नहीं जिसमें ऑडियो हो, और वेब ने GIF की जगह ज़्यादातर चुपचाप लूप होते वीडियो को इसीलिए रखा। आवाज़ मायने रखती हो, तो वीडियो ही रखिए, और वीडियो कटर उसमें से कोई हिस्सा एक भी फ़्रेम दोबारा एनकोड किए बिना काट देगा।
क्या यह मुफ़्त है, और क्या मुझे खाता चाहिए?
यह मुफ़्त है, और यहाँ न कोई खाता है, न साइन-इन, न ट्रायल, न वॉटरमार्क। साइट पर विज्ञापन हैं, और वही इसका खर्च उठाते हैं; विज्ञापनों को आपके वीडियो के बारे में कुछ नहीं दिया जाता।