केस स्टडी

Instagram और Facebook, Media3 PreloadManager की मदद से वीडियो तुरंत चलाने की सुविधा देते हैं. साथ ही, इससे यूज़र ऐक्टिविटी भी बढ़ती है

चार मिनट में पढ़ें
Mayuri Khinvasara Khabya
डेवलपर रिलेशंस इंजीनियर

सोशल मीडिया की इस डाइनैमिक दुनिया में, उपयोगकर्ता का ध्यान तुरंत खींच लिया जाता है या वह तुरंत हट जाता है. Meta के ऐप्लिकेशन (Facebook और Instagram), दुनिया के सबसे बड़े सोशल प्लैटफ़ॉर्म में से एक हैं. ये दुनिया भर के अरबों लोगों को सेवाएं देते हैं. Meta के लिए, वीडियो को बिना किसी रुकावट के दिखाना सिर्फ़ एक सुविधा नहीं है, बल्कि यह लोगों को बेहतर अनुभव देने का मुख्य तरीका है. शॉर्ट वीडियो, खास तौर पर Facebook Newsfeed और Instagram Reels पर मौजूद वीडियो, लोगों की दिलचस्पी बढ़ाने का मुख्य ज़रिया बन गए हैं. इनसे क्रिएटिविटी को बढ़ावा मिलता है और कॉन्टेंट को तेज़ी से देखा जा सकता है. साथ ही, ये दुनिया भर के लोगों को एक-दूसरे से जुड़ने और उनका मनोरंजन करने में मदद करते हैं. 

इस ब्लॉग पोस्ट में बताया गया है कि Meta ने अरबों लोगों के लिए, वीडियो को तुरंत चलाने की सुविधा कैसे उपलब्ध कराई.

कम अवधि के वीडियो में लेटेन्सी का अंतर

कम अवधि के वीडियो में, इंटरैक्शन बहुत तेज़ी से होते हैं. ऐसा इसलिए, क्योंकि उपयोगकर्ता अपने फ़ीड को तेज़ी से स्क्रोल करते हैं. हमेशा बदलते रहने वाले फ़ीड में, वीडियो के बीच आसानी से ट्रांज़िशन करने से, तुरंत वीडियो चलाने में कई तरह की समस्याएं आती हैं. इसलिए, हमें ऐसे समाधानों की ज़रूरत है जो पारंपरिक डिस्क कैश मेमोरी और स्टैंडर्ड रीऐक्टिव प्लेबैक रणनीतियों से आगे बढ़ें.

Media3 PreloadManager का इस्तेमाल करके, आगे बढ़ने का तरीका

शॉर्ट वीडियो के बढ़ते चलन और लंबी अवधि के वीडियो चलाने के पारंपरिक आर्किटेक्चर की सीमाओं को ध्यान में रखते हुए, Jetpack Media3 ने PreloadManager को लॉन्च किया है. इस कॉम्पोनेंट की मदद से, डेवलपर डिस्क कैश मेमोरी से आगे बढ़ सकते हैं. साथ ही, यह उन्हें मीडिया को मेमोरी में तैयार रखने के लिए, ज़्यादा कंट्रोल और पसंद के मुताबिक बनाने की सुविधा देता है. इससे उपयोगकर्ता के 'चलाएं' बटन पर क्लिक करने से पहले ही मीडिया तैयार रहता है. PreloadManager की मदद से मीडिया चलाने के बारे में तकनीकी जानकारी पाने के लिए, यह ब्लॉग सीरीज़ पढ़ें.

Meta ने वीडियो को तुरंत चलाने की सुविधा कैसे हासिल की

मौजूदा समस्याएं

पहले, Meta वीडियो डिलीवर करने के लिए, वार्मअप (खिलाड़ियों को तैयार करने के लिए) और प्रीफ़ेच (डिस्क पर कॉन्टेंट को कैश मेमोरी में सेव करने के लिए) का इस्तेमाल करता था. इन तरीकों से नेटवर्क की परफ़ॉर्मेंस को बेहतर बनाने में मदद मिली. हालांकि, इनसे कई समस्याएं भी आईं. वार्मअप के लिए, प्लेयर के कई इंस्टेंस को क्रम से शुरू करना पड़ता था. इससे काफ़ी मेमोरी खर्च होती थी और सिर्फ़ कुछ वीडियो को पहले से लोड किया जा सकता था. संसाधनों की ज़्यादा ज़रूरत होने की वजह से, एक ऐसा बेहतर और आसानी से इस्तेमाल किया जा सकने वाला समाधान लागू किया जा सकता है जिससे आधुनिक और तेज़ी से स्क्रोल की जा सकने वाली सोशल फ़ीड पर, वीडियो तुरंत चलाया जा सके.

Media3 PreloadManager को इंटिग्रेट करना

तुरंत वीडियो चलाने की सुविधा को बेहतर बनाने के लिए, Meta की Media Foundation Client टीम ने Jetpack Media3 PreloadManager को Facebook और Instagram में इंटिग्रेट किया. उन्होंने प्रीलोडिंग और वीडियो चलाने के सिस्टम को एक साथ मैनेज करने के लिए, DefaultPreloadManager को चुना. इस इंटिग्रेशन के लिए, Meta के मौजूदा आर्किटेक्चर को फिर से फ़ैक्टर करना ज़रूरी था, ताकि PreloadManager और ExoPlayer इंस्टेंस के बीच संसाधनों को असरदार तरीके से शेयर किया जा सके. इस रणनीति में बदलाव करने से, आर्किटेक्चर के मामले में एक अहम फ़ायदा मिला. इससे प्रीलोडिंग के टास्क को एक साथ पूरा किया जा सका. साथ ही, एक ही प्लेयर इंस्टेंस का इस्तेमाल करके कई वीडियो मैनेज किए जा सके. इससे प्रीलोडिंग की क्षमता में काफ़ी बढ़ोतरी हुई. साथ ही, पिछले तरीके में मेमोरी से जुड़ी जटिलताएं भी खत्म हो गईं.

colinKho.png

ऑप्टिमाइज़ेशन और परफ़ॉर्मेंस ट्यूनिंग

इसके बाद, टीम ने Meta के अलग-अलग डिवाइसों के ग्लोबल ईकोसिस्टम में परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, कई बार जांच की और बदलाव किए. कभी-कभी, शुरुआती तौर पर ज़्यादा प्रीलोडिंग की वजह से समस्याएं आती थीं. जैसे, मेमोरी का ज़्यादा इस्तेमाल होना और स्क्रोल करने की परफ़ॉर्मेंस धीमी होना. इस समस्या को हल करने के लिए, उन्होंने मेमोरी के इस्तेमाल को ध्यान से मापा. साथ ही, डिवाइस के फ़्रैगमेंटेशन को ध्यान में रखा और सिस्टम को खास यूज़र इंटरफ़ेस (यूआई) पैटर्न के हिसाब से बनाया.

खास यूज़र इंटरफ़ेस (यूआई) पैटर्न के लिए, लागू करने की प्रोसेस को बेहतर बनाना

Meta ने प्रीलोडिंग की अलग-अलग रणनीतियां लागू कीं. साथ ही, हर ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) पैटर्न से मेल खाने के लिए, ऐप्लिकेशन के व्यवहार को ज़रूरत के मुताबिक बनाया:

  • Facebook Newsfeed: यूज़र इंटरफ़ेस (यूआई) में, फ़िलहाल दिख रहे वीडियो को प्राथमिकता दी जाती है. मैनेजर सिर्फ़ मौजूदा वीडियो को प्रीलोड करता है, ताकि उपयोगकर्ता के स्क्रोल रोकने पर वीडियो तुरंत शुरू हो जाए. "सिर्फ़ मौजूदा" पर फ़ोकस करने से, डेटा और मेमोरी फ़ुटप्रिंट कम हो जाते हैं. ऐसा इसलिए, क्योंकि इस तरह के एनवायरमेंट में लोगों को वीडियो के बीच कई स्टैटिक पोस्ट दिख सकती हैं. फ़िलहाल, सिस्टम को सिर्फ़ दिखने वाले वीडियो को प्रीलोड करने के लिए डिज़ाइन किया गया है. हालांकि, इसे आने वाले (भविष्य के) वीडियो को भी प्रीलोड करने के लिए अडजस्ट किया जा सकता है. 
  • Instagram Reels: यह सिर्फ़ वीडियो वाला प्लैटफ़ॉर्म है, जहां उपयोगकर्ता वर्टिकल स्वाइप करते हैं. इस यूज़र इंटरफ़ेस (यूआई) के लिए, टीम ने "एडजेसेंट प्रीलोड" रणनीति लागू की है. PreloadManager, मौजूदा रील के तुरंत बाद चलने वाली रील को मेमोरी में सेव रखता है. दोनों दिशाओं में काम करने वाले इस तरीके से यह पक्का होता है कि उपयोगकर्ता चाहे ऊपर की ओर स्वाइप करे या नीचे की ओर, ट्रांज़िशन तुरंत और आसानी से हो. इससे, उपयोगकर्ता अनुभव (क्यूओई) में काफ़ी सुधार हुआ. साथ ही, वीडियो चलाने में लगने वाले समय और पहले फ़्रेम को रेंडर करने में लगने वाले समय में भी सुधार हुआ.

अलग-अलग तरह के डिवाइसों के लिए, ग्लोबल डिवाइस नेटवर्क को बढ़ाना

अरबों डिवाइसों पर, बेहतर परफ़ॉर्म करने वाले वीडियो स्टैक को स्केल करने के लिए, सिर्फ़ एग्रेसिव प्रीलोडिंग की ज़रूरत नहीं होती. इसके लिए, इंटेलिजेंस की ज़रूरत होती है. Meta को मेमोरी प्रेशर और स्क्रोल लैग से जुड़ी शुरुआती समस्याओं का सामना करना पड़ा. खास तौर पर, मिड-टू-लो-एंड हार्डवेयर पर. इस समस्या को हल करने के लिए, उन्होंने Media3 को लागू करके डिवाइस स्ट्रेस डिटेक्शन सिस्टम बनाया. अब ये ऐप्लिकेशन, I/O और सीपीयू के सिग्नल को रीयल-टाइम में मॉनिटर करते हैं. अगर किसी डिवाइस पर बहुत ज़्यादा लोड है, तो यूज़र इंटरफ़ेस (यूआई) के रिस्पॉन्स को प्राथमिकता देने के लिए, पहले से लोड करने की प्रोसेस को रोक दिया जाता है.

डिवाइस के हिसाब से किए गए इस ऑप्टिमाइज़ेशन से यह पक्का होता है कि वीडियो तुरंत चलाने की सुविधा से सिस्टम की स्थिरता पर कोई असर न पड़े. इससे पुराने हार्डवेयर का इस्तेमाल करने वाले लोग भी बिना किसी रुकावट के वीडियो देख पाते हैं.

mirabelHu.png

आर्किटेक्चर से जुड़ी उपलब्धियां और कोड की क्वालिटी

उपयोगकर्ता को दिखने वाली मेट्रिक के अलावा, Media3 PreloadManager पर माइग्रेट करने से, आर्किटेक्चर से जुड़े लंबे समय तक फ़ायदे मिलते हैं. इंटिग्रेशन और ट्यूनिंग की प्रोसेस में, परफ़ॉर्मेंस को बेहतर बनाने के लिए कई बार बदलाव करने पड़े. हालांकि, इससे तैयार हुआ कोडबेस ज़्यादा आसानी से मैनेज किया जा सकता है. टीम को पता चला कि PreloadManager एपीआई, मौजूदा Media3 इकोसिस्टम के साथ आसानी से इंटिग्रेट हो जाता है. इससे, रिसॉर्स को बेहतर तरीके से शेयर किया जा सकता है. Meta के लिए, Media3 PreloadManager को अपनाना, वीडियो देखने के अनुभव को बेहतर बनाने के लिए एक रणनीतिक निवेश था. 

प्रीलोडिंग की सुविधा का इस्तेमाल करके और डिवाइस के हिसाब से स्मार्ट गेट जोड़कर, उन्होंने अपने ऐप्लिकेशन पर वीडियो देखने का कुल समय बढ़ाया. साथ ही, दुनिया भर में मौजूद अपने समुदाय की दिलचस्पी को बेहतर बनाया. 

Instagram और Facebook पर इसका असर

प्रोऐक्टिव आर्किटेक्चर की वजह से, दोनों प्लैटफ़ॉर्म पर तुरंत और मेज़र किए जा सकने वाले सुधार हुए. 

  • Facebook पर, वीडियो तेज़ी से चलने लगे, वीडियो रुकने की दर कम हो गई, और खराब सेशन की संख्या में कमी आई. जैसे, वीडियो के बफ़र होने में कम समय लगा, वीडियो देर से शुरू नहीं हुआ, और वीडियो की क्वालिटी बेहतर हुई. इन सभी वजहों से, वीडियो देखने का कुल समय बढ़ गया. 
  • Instagram पर, वीडियो तेज़ी से चलने लगे और वीडियो देखने के कुल समय में बढ़ोतरी हुई. उपयोगकर्ता की कार्रवाई और पहले फ़्रेम के दिखने के बीच के समय को कम करने से, यूज़र ऐक्टिविटी की मेट्रिक में सीधे तौर पर बढ़ोतरी हुई.  बफ़रिंग कम होने की वजह से, कम रुकावटें आईं. इसका मतलब है कि उपयोगकर्ताओं ने ज़्यादा कॉन्टेंट देखा. यह यूज़र ऐक्टिविटी वाली मेट्रिक से पता चलता है.
beforeAfterPreload.gif

बड़े पैमाने पर इंजीनियरिंग से जुड़ी अहम जानकारी

मीडिया कॉन्टेंट देखने की आदतें बदल रही हैं. इसलिए, तुरंत मिलने वाले अनुभवों की मांग बढ़ती रहेगी. मेमोरी को पहले से मैनेज करने की सुविधा लागू करने के साथ-साथ, अलग-अलग डिवाइसों के हिसाब से ऐप्लिकेशन को ऑप्टिमाइज़ करने से, यह पक्का किया जा सकता है कि आपका ऐप्लिकेशन इन उम्मीदों को पूरा कर सके.

  • इंटेलिजेंट प्रीलोडिंग को प्राथमिकता देना

प्रीलोडिंग की मदद से, वीडियो के रुकने और लोड होने में लगने वाले समय को कम करें. इससे, दर्शकों को बेहतर अनुभव मिलेगा. डिस्क कैश मेमोरी के बजाय, मेमोरी-लेवल प्रीलोडिंग का इस्तेमाल करने से यह पक्का होता है कि जब कोई उपयोगकर्ता कॉन्टेंट से इंटरैक्ट करे, तो वह तुरंत उपलब्ध हो.

  • यूज़र इंटरफ़ेस (यूआई) के पैटर्न के हिसाब से, लागू करने की प्रोसेस को अलाइन करना

अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) के हिसाब से, प्रीलोडिंग के तरीके को पसंद के मुताबिक बनाएं. उदाहरण के लिए, मेमोरी बचाने के लिए Facebook जैसे मिक्स फ़ीड के लिए, "सिर्फ़ मौजूदा" फ़ोकस का इस्तेमाल करें. साथ ही, Instagram Reels जैसे वर्टिकल एनवायरमेंट के लिए, "आस-पास के आइटम पहले से लोड करने" की रणनीति का इस्तेमाल करें.

preloadingStrategy.png
  • लंबे समय तक कोड को बेहतर बनाए रखने के लिए, Media3 का इस्तेमाल करें

कस्टम कैशिंग समाधान के बजाय Media3 एपीआई के साथ इंटिग्रेट करने से, प्लेयर और PreloadManager के बीच बेहतर तरीके से संसाधन शेयर किए जा सकते हैं. इससे, आपको एक ही प्लेयर इंस्टेंस से कई वीडियो मैनेज करने में मदद मिलती है. इससे, आने वाले समय में काम करने वाला कोडबेस तैयार होता है. इंजीनियरिंग टीमें इसे आसानी से मैनेज कर सकती हैं और समय के साथ ऑप्टिमाइज़ कर सकती हैं. साथ ही, उन्हें नई सुविधाओं से जुड़े अपडेट का फ़ायदा भी मिलता है.

  • डिवाइस के हिसाब से ऑप्टिमाइज़ेशन लागू करना

मिड-टू-लो-एंड मॉडल वाले डिवाइसों पर टेस्टिंग करके, अपने ऐप्लिकेशन की पहुंच बढ़ाएं. सीपीयू, मेमोरी, और I/O जैसे रीयल-टाइम सिग्नल का इस्तेमाल करके, सुविधाओं और संसाधनों के इस्तेमाल को डाइनैमिक तरीके से अडैप्ट करें.

ज़्यादा जानें

शुरू करने और ज़्यादा जानने के लिए,  पर जाएं

अब आपको तुरंत वीडियो चलाने के तरीके के बारे में पता चल गया है. इन्हें आज़माकर देखें!

इसे लिखा है:

पढ़ना जारी रखें