कंटेंट पर जाएँ
charmotion

कैरेक्टर एनिमेशन से Telegram वीडियो स्टिकर

Charmotion टीम द्वारा · अपडेट:

स्टिकर और इमोजी गाइड का कवर इलस्ट्रेशन: कैरेक्टर एनिमेशन से Telegram वीडियो स्टिकर, Charmotion डेमो कैरेक्टर के साथ

Telegram वीडियो स्टिकर बनाने के लिए VP9 से encode की गई .WEBM एक्सपोर्ट करें, जिसकी एक साइड ठीक 512 px और दूसरी 512 px या उससे कम हो, अवधि 3 सेकंड से ज़्यादा न हो, 30 fps तक, अधिकतम 256 KB और बिना ऑडियो के। ट्रांसपेरेंट कैरेक्टर एनिमेशन को ffmpeg से कन्वर्ट करें, फिर @Stickers bot के ज़रिए सेट अपलोड करें।

मुख्य बातें

  • वीडियो स्टिकर VP9 वाली WEBM होते हैं: एक साइड ठीक 512 px, अधिकतम 3 s, 30 fps तक, अधिकतम 256 KB, कोई audio stream नहीं।
  • -c:v libvpx-vp9 को -i से पहले लगाएँ, वरना ffmpeg का built-in decoder WebM की transparency हटा देता है।
  • -pix_fmt yuva420p से encode करें और फ़ाइल 256 KB से कम होने तक -crf बढ़ाते रहें।
  • Custom emoji पर वीडियो के यही नियम ठीक 100×100 px पर लागू होते हैं; इन्हें कोई भी बना सकता है, लेकिन custom emoji सेट जोड़ना और इस्तेमाल करना Telegram Premium फ़ीचर है।
  • .TGS animated स्टिकर एक अलग वेक्टर फ़ॉर्मेट है: 512×512, 60 fps, 3 s, 64 KB।

पहले से कोई कैरेक्टर या लोगो है? अपने कैरेक्टर को असली ऐप स्क्रीन में देखें: स्प्लैश, ऑनबोर्डिंग, लोडिंग और एम्प्टी स्टेट स्क्रीन। यह फ़्री है, आपके ब्राउज़र में चलता है और कुछ भी अपलोड नहीं होता।

Telegram के वीडियो स्टिकर की सटीक ज़रूरतें क्या हैं?

Telegram ये नियम अपने stickers पेज पर प्रकाशित करता है। वीडियो स्टिकर के लिए Telegram 8.5 या उससे नया वर्ज़न चाहिए, और हर फ़ाइल को ये सभी शर्तें एक साथ पूरी करनी होंगी:

ज़रूरतवीडियो स्टिकरवीडियो emoji
Container और codec.WEBM, VP9.WEBM, VP9
डाइमेंशनएक साइड ठीक 512 px, दूसरी 512 px या उससे कमठीक 100×100 px
अवधिअधिकतम 3 सेकंडअधिकतम 3 सेकंड
Frame rateअधिकतम 30 fpsअधिकतम 30 fps
फ़ाइल साइज़अधिकतम 256 KBअधिकतम 256 KB
ऑडियोकोई ऑडियो स्ट्रीम नहींकोई ऑडियो स्ट्रीम नहीं
लूपिंगलूप होना चाहिएलूप होना चाहिए

Telegram के अपने शब्दों में: "Video duration must not exceed 3 seconds. Frame rate can be up to 30 FPS. Video should be looped for optimal user experience. Video size should not exceed 256 KB." (वीडियो की अवधि 3 सेकंड से ज़्यादा नहीं होनी चाहिए, frame rate 30 FPS तक हो सकता है, बेहतर अनुभव के लिए वीडियो लूप होना चाहिए और वीडियो का साइज़ 256 KB से ज़्यादा नहीं होना चाहिए।) स्टिकर पेज यह भी कहता है कि वीडियो में "कोई ऑडियो स्ट्रीम नहीं होनी चाहिए", जो म्यूट ट्रैक से भी ज़्यादा सख्त नियम है। -an से ऑडियो पूरी तरह हटा दें।

स्क्वेयर कैरेक्टर सबसे आसान मामला है: उसे 512×512 पर स्केल करें और डाइमेंशन के दोनों नियम पूरे हो जाते हैं। Telegram की अपनी VP9 एन्कोडिंग गाइड Adobe Media Encoder की सेटिंग्स बताती है और कहती है कि "Handbrake या ffmpeg जैसे प्रोग्राम VP9 के साथ .WEBM एन्कोडिंग को नेटिव रूप से सपोर्ट करते हैं", लेकिन उसमें कोई ffmpeg कमांड नहीं दी गई है, इसलिए नीचे दी गई कमांड यह कमी पूरी करती है।

Telegram में स्वीकार होने वाली ट्रांसपेरेंट WEBM कैसे एक्सपोर्ट करें?

ट्रांसपेरेंट मास्टर फ़ाइल से शुरुआत करें। सबसे अच्छा सोर्स अल्फ़ा वाली VP9 WebM है, क्योंकि Telegram यही codec चाहता है और सही डिकोडर चुनने पर ffmpeg इसका अल्फ़ा भरोसेमंद तरीके से पढ़ता है। यह कमांड ffmpeg 7.1.1 पर 1080×1080 की ट्रांसपेरेंट WebM के साथ चलाई गई और इससे 512×512 की, 3.000 सेकंड की, 27 KB की फ़ाइल बनी, जिसमें अल्फ़ा सुरक्षित रहा:

ffmpeg -c:v libvpx-vp9 -i character.webm -t 3 -vf "fps=30,scale=512:512:force_original_aspect_ratio=decrease" -c:v libvpx-vp9 -pix_fmt yuva420p -b:v 0 -crf 40 -deadline good -an sticker.webm

हर हिस्सा क्या करता है:

  • -i से पहले -c:v libvpx-vp9 libvpx डिकोडर को ज़बरदस्ती चुनता है, जो अल्फ़ा प्लेन पढ़ता है।
  • -t 3 आउटपुट को 3 सेकंड पर काट देता है।
  • fps=30 frame rate की सीमा तय करता है; scale=512:512:force_original_aspect_ratio=decrease सबसे लंबी साइड को 512 px में फ़िट करता है।
  • -pix_fmt yuva420p आउटपुट में अल्फ़ा चैनल बनाए रखता है।
  • -b:v 0 -crf 40 कॉन्स्टेंट-क्वालिटी मोड है; CRF जितना ज़्यादा होगा, फ़ाइल उतनी छोटी बनेगी।
  • -an कोई भी ऑडियो स्ट्रीम हटा देता है।

अगर आपका सोर्स GIF है, तो शुरुआत वाला -c:v libvpx-vp9 हटा दें; GIF में सिर्फ़ ऑन/ऑफ़ ट्रांसपेरेंसी होती है, इसलिए किनारे सख्त दिखेंगे। अगर सोर्स HEVC-alpha .mov है, तो इन टेस्ट में यह जाँचा नहीं गया कि ffmpeg उसका अल्फ़ा डिकोड कर पाता है या नहीं, इसलिए ट्रांसपेरेंट WebM ज़्यादा सुरक्षित मास्टर है।

4 सेकंड के लूप को बिना सोचे 3 सेकंड पर न काटें: आखिरी फ़्रेम से पहले फ़्रेम पर लौटने का झटका दिखेगा। बेहतर है कि ऐसा वन-शॉट रिएक्शन चुनें जो पहले से फ़िट हो, या 3 सेकंड के लिए बनाया गया लूप।

मेरे स्टिकर का ट्रांसपेरेंट बैकग्राउंड क्यों गायब हो गया?

लगभग हमेशा इसकी वजह यह होती है कि ffmpeg ने इनपुट को अपने बिल्ट-इन VP9 डिकोडर से डिकोड किया, जो WebM में सेव अल्फ़ा चैनल को नज़रअंदाज़ कर देता है। फ़्रेम अपारदर्शी आते हैं, आमतौर पर काले बैकग्राउंड पर, और उसके बाद सब कुछ बिना ट्रांसपेरेंसी के एन्कोड होता है। इनपुट डिकोडर के रूप में libvpx को ज़बरदस्ती चुनने से यह ठीक हो जाता है: लोकल टेस्ट में -c:v libvpx-vp9 से डिकोड करने पर RGBA फ़्रेम मिले, जिनमें 75% पिक्सेल ट्रांसपेरेंट थे।

दूसरी वजह आउटपुट पिक्सेल फ़ॉर्मेट है। -pix_fmt yuva420p के बिना libvpx-vp9 सादा yuv420p एन्कोड करता है और अल्फ़ा हटा देता है, भले ही इनपुट में अल्फ़ा हो।

ग्रेडिएंट पर अल्फ़ा चैनल वाले स्मूथ किनारे और one-bit GIF के टेढ़े-मेढ़े किनारे की ज़ूम की गई तुलना

नतीजा जाँचना उलझन भरा है, क्योंकि ffprobe अक्सर ऐसी WebM के लिए भी pix_fmt=yuv420p दिखाता है जिसमें सच में अल्फ़ा होता है। इसकी जगह ALPHA_MODE=1 टैग देखें:

ffprobe -v error -show_streams sticker.webm | grep -i alpha

अगर यह टैग नहीं है, तो फ़ाइल में अल्फ़ा प्लेन नहीं है। कन्वर्ज़न दोबारा चलाएँ, जिसमें डिकोडर -i से पहले हो और yuva पिक्सेल फ़ॉर्मेट उसके बाद।

क्वालिटी बिगाड़े बिना 256 KB से नीचे कैसे आएँ?

256 KB यानी 262,144 bytes। अपलोड करने से पहले सटीक byte संख्या जाँचें:

ls -l sticker.webm  # must be <=262144 bytes for Telegram; lower -crf → bigger file, raise crf (e.g. 45-50) or fps 24 to shrink

फिर इस क्रम में एक-एक स्टेप आज़माएँ और हर स्टेप के बाद दोबारा जाँचें:

  1. CRF बढ़ाएँ। 40 से 45 करें, फिर 50। ज़्यादा CRF का मतलब है हर फ़्रेम में कम bits।
  2. Frame rate घटाएँ। fps=30 को fps=24 करें। कैरेक्टर की स्मूद मोशन आमतौर पर इससे खराब नहीं होती।
  3. क्लिप छोटी करें। साफ़ रिएक्शन के दो सेकंड अक्सर तीन सेकंड की धीमी हलचल से बेहतर लगते हैं।
  4. खाली जगह क्रॉप करें। ट्रांसपेरेंट मार्जिन भी bits लेते हैं; टाइट क्रॉप करें, फिर इस तरह स्केल करें कि सबसे लंबी साइड 512 px हो।

साइज़ कंटेंट पर निर्भर करता है। सिर्फ़ पलक झपकाने वाला कैरेक्टर पूरे शरीर से कूदने वाले कैरेक्टर से कहीं बेहतर कंप्रेस होता है, इसलिए यह मानकर न चलें कि एक ही सेटिंग पूरे पैक पर फ़िट होगी, हर स्टिकर अलग से टेस्ट करें।

पैक कैसे अपलोड करें (@Stickers या Bot API से)?

आम तरीका Telegram का @Stickers bot है। नया वीडियो स्टिकर सेट शुरू करें (bot की कमांड /newvideo है), हर .WEBM फ़ाइल भेजें, उसे एक या ज़्यादा इमोजी असाइन करें और एक छोटे नाम के साथ सेट पब्लिश करें।

इसे ऑटोमेट करने के लिए Bot API का createNewStickerSet method इस्तेमाल करें। ये नियम सबसे ज़्यादा एरर की वजह बनते हैं:

  • हर InputSticker का एक format होता है: .WEBP या .PNG के लिए "static", .TGS के लिए "animated", .WEBM के लिए "video"।
  • सेट का नाम _by_<bot_username> पर खत्म होना चाहिए और 1-64 अक्षरों का होना चाहिए।
  • आप शुरुआत में 1-50 स्टिकर भेज सकते हैं, हर एक के emoji_list में 1-20 इमोजी के साथ।
  • "एनिमेटेड और वीडियो स्टिकर HTTP URL से अपलोड नहीं किए जा सकते", इसलिए फ़ाइल खुद अपलोड करें।
  • sticker_type की वैल्यू "regular", "mask" या "custom_emoji" होती है।

सेट का थंबनेल (setStickerSetThumbnail) सेट के फ़ॉर्मेट से मेल खाना चाहिए। .WEBM थंबनेल 32 KB तक हो सकता है; .WEBP या .PNG थंबनेल ठीक 100×100 px और 128 KB तक होना चाहिए; .TGS थंबनेल 32 KB तक।

वीडियो स्टिकर या .TGS एनिमेटेड स्टिकर: कौन सा इस्तेमाल करें?

.TGS एनिमेटेड स्टिकर वेक्टर एनिमेशन होते हैं, यानी Lottie का एक सबसेट जो Telegram के Bodymovin-TG plugin से After Effects से एक्सपोर्ट किया जाता है। इनकी सीमाएँ अलग हैं: 512×512 का कैनवस जिससे ऑब्जेक्ट बाहर नहीं जाने चाहिए, अधिकतम 3 सेकंड, हमेशा लूप, ठीक 60 fps, और "Bodymovin में रेंडर करने के बाद" 64 KB से ज़्यादा नहीं।

.TGS में After Effects के कई फ़ीचर वर्जित हैं, जैसे expressions, masks, layer effects, images, solids, texts, 3D layers, merge paths, gradient strokes, repeaters और time remapping। 3D में रेंडर किया गया या पिक्सेल में पेंट किया गया कैरेक्टर .TGS बन ही नहीं सकता, क्योंकि इमेज की अनुमति नहीं है।

वीडियो (.WEBM)एनिमेटेड (.TGS)
सोर्सअल्फ़ा वाला कोई भी रेंडर किया हुआ वीडियोAfter Effects के वेक्टर शेप
Frame rateअधिकतम 30 fps60 fps
अधिकतम साइज़256 KB64 KB
अधिकतम अवधि3 सेकंड3 सेकंड

अगर आपके पास पहले से रेंडर किया हुआ या AI से बना कैरेक्टर है, तो वीडियो स्टिकर इस्तेमाल करें। .TGS तभी चुनें जब कैरेक्टर After Effects में फ़्लैट वेक्टर शेप से बनाया गया हो।

उसी एनिमेशन से 100x100 का कस्टम इमोजी कैसे बनाएँ?

Telegram का नियम छोटा है: "इमोजी के लिए वीडियो का साइज़ ठीक 100x100 पिक्सेल होना चाहिए।" बाकी सब वीडियो स्टिकर जैसा ही है:

कस्टम इमोजी स्पेसिफ़िकेशनमान
वीडियो emoji.WEBM, VP9, ठीक 100×100 px, अधिकतम 3 s, 30 fps तक, अधिकतम 256 KB, कोई ऑडियो स्ट्रीम नहीं
स्टैटिक इमोजीठीक 100×100 px (स्टैटिक स्टिकर जैसे ही इमेज नियम)
कौन इस्तेमाल कर सकता है"कोई भी नए कस्टम इमोजी बना सकता है", लेकिन कस्टम सेट जोड़ना और इस्तेमाल करना Telegram Premium फ़ीचर है
अडैप्टिव कलरथीम के हिसाब से बदलने वाले सिंगल-कलर इमोजी के लिए सेट बनाते समय /adaptive भेजें

प्लानिंग के लिए Premium नियम अहम है: Telegram का स्टिकर पेज कहता है कि कस्टम सेट जोड़ना और इस्तेमाल करना "फ़िलहाल सिर्फ़" Premium फ़ीचर है। अगर आपकी ज़्यादातर ऑडियंस Premium पर नहीं है, तो सामान्य वीडियो स्टिकर सेट, जिसे कोई भी इस्तेमाल कर सकता है, ज़्यादा लोगों तक पहुँचता है। स्क्वेयर ट्रांसपेरेंट मास्टर से:

ffmpeg -c:v libvpx-vp9 -i character.webm -t 3 -vf "fps=30,scale=100:100" -c:v libvpx-vp9 -pix_fmt yuva420p -b:v 0 -crf 40 -an emoji.webm

100 px पर बारीकियाँ गायब हो जाती हैं। ऐसा एनिमेशन चुनें जिसमें पूरा सिल्हूट बदलता हो, जैसे सिर हिलाना, कूदना या हाथ हिलाना, न कि चेहरे का हल्का-सा एक्सप्रेशन। क्रॉप ऐसे करें कि कैरेक्टर पूरा फ़्रेम भर दे।

Bot API में sticker_type को "custom_emoji" पर सेट करके या @Stickers से सेट बनाएँ। जिन सिंगल-कलर इमोजी को यूज़र की थीम और टेक्स्ट कलर के हिसाब से बदलना हो, उनके लिए Telegram इमोजी सेट बनाते समय /adaptive भेजने देता है; यह फ़ुल-कलर कैरेक्टर से ज़्यादा लोगो मार्क के लिए सही है।

Charmotion कैरेक्टर एनिमेशन से शुरुआत कैसे करें?

Charmotion अपलोड किए गए कैरेक्टर, मैस्कॉट या लोगो को कुछ ही मिनटों में एक .riv फ़ाइल के रूप में 17 एनिमेशन में बदलता है। 1080×1080 पर ट्रांसपेरेंट WebM (VP9 alpha) और MOV (HEVC alpha), MP4 और 480 px GIF ज़रूरत पर एक्सपोर्ट होते हैं, लगभग एक मिनट में। यह तैयार स्टिकर पैक एक्सपोर्ट नहीं करता। ऊपर के कमांड में ट्रांसपेरेंट WebM (पेड प्लान, $20/माह से) को character.webm की तरह इस्तेमाल करें: success, yes और no जैसे वन-शॉट रिएक्शन स्वाभाविक स्टिकर हैं, और -t 3 विकल्प लंबी चीज़ को Telegram की 3 सेकंड सीमा तक ट्रिम कर देता है।

1080×1080 का सोर्स काफ़ी गुंजाइश देता है: scale filter इसे बिना अपस्केलिंग के स्टिकर के लिए 512×512 और इमोजी के लिए 100×100 तक ले आता है। लूपिंग मूड अपनी-अपनी अवधि के सीमलेस लूप के रूप में बनाए जाते हैं, इसलिए अगर कोई 3 सेकंड से लंबा है, तो अपलोड करने से पहले कट पॉइंट जाँचें, या उसे सिर्फ़ वहीं इस्तेमाल करें जहाँ लंबी अवधि की अनुमति हो, जैसे Discord या WhatsApp।

छह वन-शॉट रिएक्शन: success, error, yes, no, enter और exit
वन-शॉट रिएक्शन ट्रिगर से फ़ायर होते हैं और खत्म होने पर मौजूदा मूड पर लौट आते हैं।

ट्रांसपेरेंट एनिमेशन से Telegram वीडियो स्टिकर कैसे बनाएँ

  1. क्लिप चुनें. ऐसा छोटा रिएक्शन या लूप चुनें जो 3 सेकंड में साफ़ समझ आए।
  2. ffmpeg से कन्वर्ट करें. टेस्ट की गई कमांड चलाएँ, जिसमें -i से पहले -c:v libvpx-vp9, -t 3, fps=30, 512 px स्केल, -pix_fmt yuva420p और -an हों।
  3. अल्फ़ा जाँचें. ffprobe चलाएँ और पक्का करें कि ALPHA_MODE=1 टैग मौजूद है।
  4. साइज़ जाँचें. पक्का करें कि फ़ाइल 262,144 bytes या उससे कम है; अगर नहीं, तो CRF बढ़ाएँ या fps घटाएँ।
  5. अपलोड करें. @Stickers में एक वीडियो सेट बनाएँ, हर WEBM भेजें और उसे इमोजी असाइन करें, या format "video" के साथ createNewStickerSet कॉल करें।
  6. थंबनेल जोड़ें. 32 KB तक का WEBM थंबनेल सेट करें, ताकि वह सेट के फ़ॉर्मेट से मेल खाए।

अक्सर पूछे जाने वाले सवाल

क्या Telegram वीडियो स्टिकर 3 सेकंड से लंबा हो सकता है?

नहीं। Telegram के stickers पेज के अनुसार वीडियो की अवधि 3 सेकंड से ज़्यादा नहीं होनी चाहिए, यह नियम स्टिकर और वीडियो इमोजी दोनों पर लागू है। ffmpeg के -t 3 विकल्प से ट्रिम करें, या बेहतर होगा कि ऐसा एनिमेशन चुनें जो 3 सेकंड के भीतर पूरा हो जाए, ताकि लूप पॉइंट साफ़ रहे और मोशन के बीच में झटका न लगे।

क्या Telegram वीडियो स्टिकर का स्क्वेयर होना ज़रूरी है?

नहीं। एक साइड ठीक 512 पिक्सेल होनी चाहिए और दूसरी 512 पिक्सेल या उससे कम हो सकती है, इसलिए 512×384 मान्य है। वीडियो इमोजी इसका अपवाद हैं और उन्हें ठीक 100×100 पिक्सेल होना चाहिए। 512×512 पर स्केल किया गया स्क्वेयर कैरेक्टर बिना किसी अतिरिक्त पैडिंग या क्रॉपिंग के स्टिकर नियम पूरा करता है।

क्या मैं MP4 को Telegram वीडियो स्टिकर में बदल सकता हूँ?

आप इसे VP9 WEBM में बदल सकते हैं, लेकिन सामान्य H.264 MP4 में अल्फ़ा चैनल नहीं होता, इसलिए स्टिकर का बैकग्राउंड ठोस रहेगा। चैट के ऊपर तैरते दिखने वाले कैरेक्टर के लिए ट्रांसपेरेंसी वाले सोर्स से शुरू करें, जैसे VP9-alpha WebM या ProRes 4444 मास्टर।

मेरे स्टिकर के कोने काले क्यों हैं?

कन्वर्ज़न के दौरान अल्फ़ा चैनल खो गया। -c:v libvpx-vp9 को -i से पहले रखें ताकि ffmpeg WebM का अल्फ़ा डिकोड करे, और -pix_fmt yuva420p के साथ एनकोड करें। फिर फ़ाइल को @Stickers पर दोबारा अपलोड करने से पहले ffprobe से ALPHA_MODE=1 टैग की पुष्टि करें। GIF सोर्स से भी कोने सख्त और किनारे खुरदुरे दिख सकते हैं।

इस गाइड से झटपट जवाब

स्रोत

संबंधित गाइड