HLS समझाया गया: क्यों आपका वीडियो बफरिंग के बिना धुंधला से तीव्र हो जाता है
क्या आपने कभी ऐसा अनुभव किया है: मेट्रो में वीडियो देखते समय, यह धुंधला होने लगता है लेकिन बिना बफरिंग के अचानक तेज हो जाता है? यह आलेख HLS प्रोटोकॉल, m3u8 अनुक्रमण और अनुकूली बिटरेट (ABR) तकनीक को उजागर करता है।
क्या आपने कभी इस दृश्य का अनुभव किया है: आप मेट्रो में अपने फोन पर एक शो देख रहे हैं, और तस्वीर पहले थोड़ी धुंधली है, लेकिन कुछ सेकंड के बाद, यह अचानक तेज और स्पष्ट हो जाती है, और पूरी प्रक्रिया पूरी तरह से हकलाना-मुक्त है?
या, क्या आपने कभी सोचा है कि आधुनिक लाइव स्ट्रीमिंग दस साल पहले की तरह बफरिंग के बजाय एक साथ लाखों उपयोगकर्ताओं को ऑनलाइन क्यों सपोर्ट कर सकती है?
इन सबके पीछे गुमनाम नायक मुख्य रूप से HLS (HTTP Live स्ट्रीमिंग) नामक एक प्रोटोकॉल है।
यदि आप एक डेवलपर हैं, या सिर्फ स्ट्रीमिंग तकनीक में रुचि रखने वाले तकनीकी उत्साही हैं, तो HLS को समझना वीडियो की दुनिया में आपका पहला कदम है।
इस लेख में, मैं अस्पष्ट शब्दजाल का ढेर नहीं लगाऊंगा। मैं आपको HLS के मुख्य तंत्रों के बारे में बताऊंगा: m3u8 अनुक्रमण, TS स्लाइसिंग, और जादुई अनुकूली बिटरेट (ABR)। इस लेख के अंत तक, आप पूरी तरह से समझ जाएंगे कि ब्राउज़र नेटवर्क पैनल में तेजी से बढ़ते अनुरोध क्या कर रहे हैं।
HLS का मूल तर्क: हाथी को फ्रिज में कैसे रखा जाए?
HLS कन्वेयर बेल्ट सुशी की तरह है: प्लेयर क्रम से बेल्ट से वीडियो सेगमेंट की प्लेट उठाता है
HLS (फ़्लैश युग के बारे में सोचें) से पहले, वेब पर वीडियो चलाने का मतलब अक्सर एक लंबा कनेक्शन स्थापित करना (जैसे RTMP) या एक बड़ी MP4 फ़ाइल डाउनलोड करना होता था। यह एक ही बार में पूरे पिज़्ज़ा को निगलने की कोशिश करने जैसा था - गला घोंटना आसान (अपर्याप्त बैंडविड्थ) और पचाने में कठिन (उच्च मेमोरी उपयोग)।
HLS का तरीका बहुत स्मार्ट है: यह पिज़्ज़ा को छोटे टुकड़ों में काटता है।
Apple ने 2009 में HLS प्रोटोकॉल पेश किया, और इसके कार्य सिद्धांत को तीन सरल चरणों में संक्षेपित किया जा सकता है:
- विभाजन: सर्वर पूरे वीडियो को सीधे नहीं भेजता है, बल्कि इसे छोटी फ़ाइलों (आमतौर पर
.tsप्रारूप में) में काटता है जो केवल कुछ सेकंड लंबी होती हैं। - अनुक्रमण: सर्वर एक “प्लेलिस्ट” फ़ाइल (
.m3u8जो आप अक्सर देखते हैं) उत्पन्न करता है, खिलाड़ी को बताता है: “यह पहला भाग है, यह दूसरा भाग है…” - मतदान: प्लेयर इंडेक्स डाउनलोड करता है, फिर वीडियो सेगमेंट को क्रम से एक-एक करके डाउनलोड करता है और उन्हें चलाता है।
यह बिल्कुल कन्वेयर बेल्ट सुशी खाने जैसा है। आपको एक ही बार में सारी सुशी रसोई से मेज पर लाने की ज़रूरत नहीं है; आपको बस कन्वेयर बेल्ट (सूचकांक) को देखने और एक के बाद एक प्लेट (डाउनलोड सेगमेंट) लेने की जरूरत है। इस तरह, HLS स्ट्रीमिंग मीडिया को सामान्य HTTP फ़ाइल डाउनलोड में बदल देता है, जिससे विशाल संगतता और फ़ायरवॉल समस्याएं हल हो जाती हैं।
M3U8 या HLS स्ट्रीम ऑनलाइन टेस्ट करें
स्ट्रीम URL को ब्राउजर प्लेयर में पेस्ट करें और डेस्कटॉप सॉफ्टवेयर इंस्टॉल किए बिना प्लेबैक जांचें।
रहस्योद्घाटन .m3u8: स्ट्रीमिंग का “खजाना मानचित्र”।
यदि आप अपने ब्राउज़र के डेवलपर टूल (F12) खोलते हैं और नेटवर्क पैनल में “m3u8” के लिए फ़िल्टर करते हैं, तो आपको अक्सर दो प्रकार की फ़ाइलें दिखाई देंगी। यह बिल्कुल HLS डिज़ाइन की सरलता है।
1. मास्टर प्लेलिस्ट: मेनू
जब प्लेयर पहली बार किसी वीडियो का अनुरोध करता है, तो उसे आमतौर पर मास्टर प्लेलिस्ट मिलती है। यह एक रेस्तरां मेनू की तरह है; इसमें विशिष्ट वीडियो डेटा नहीं है, लेकिन प्लेयर को बताता है: “मेरे पास आपके चुनने के लिए निम्नलिखित फ्लेवर हैं”:
- 1080p HD (5Mbps बैंडविड्थ की आवश्यकता है)
- 720p एसडी (3Mbps बैंडविड्थ की आवश्यकता है)
- 480p डेटा सेवर (1Mbps बैंडविड्थ की आवश्यकता है)
2. मीडिया प्लेलिस्ट: विशिष्ट सर्विंग ऑर्डर
एक बार जब खिलाड़ी एक निश्चित रिज़ॉल्यूशन (उदाहरण के लिए, 1080p) चुन लेता है, तो वह संबंधित मीडिया प्लेलिस्ट का अनुरोध करेगा। इस फ़ाइल में वास्तविक “मांस” शामिल है - वीडियो खंडों के विशिष्ट पते।
एक सामान्य .m3u8 फ़ाइल इस तरह दिखती है:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
segment0.ts
#EXTINF:10.0,
segment1.ts
#EXTINF:10.0,
segment2.ts
...#EXTINF:10.0: खिलाड़ी को बताता है कि निम्नलिखित खंड 10 सेकंड लंबा है।segment0.ts: यह वीडियो फ़ाइल का वास्तविक डाउनलोड पता है।
यह HLS का रहस्य है: खिलाड़ी लगातार इस टेक्स्ट फ़ाइल को पढ़ रहा है और संबंधित छोटी .ts फ़ाइलें डाउनलोड कर रहा है।
अनुकूली बिटरेट (एबीआर): HLS का “किलर ऐप”
एबीआर स्मार्ट लेन बदलने जैसा है: जब नेटवर्क अच्छा हो तो एचडी लेन लें, नेटवर्क खराब होने पर स्वचालित रूप से स्मूथ लेन पर स्विच करें
प्रारंभिक प्रश्न पर वापस जाएँ: वीडियो स्वचालित रूप से स्पष्ट क्यों हो जाता है?
यह HLS की एडेप्टिव बिटरेट (ABR) तकनीक का धन्यवाद है।
कल्पना कीजिए कि आप गाड़ी चला रहे हैं (वीडियो चला रहे हैं)।
- हाईवे (वाई-फाई): सड़क की स्थिति अच्छी है, प्लेयर स्वचालित रूप से “1080पी लेन” पर स्विच हो जाता है, एचडी सेगमेंट डाउनलोड करता है, जिससे आप बेहतरीन तस्वीर गुणवत्ता का आनंद ले सकते हैं।
- कंट्री रोड (कमजोर नेटवर्क/खराब 4जी सिग्नल): अचानक सिग्नल खराब हो जाता है, और डाउनलोड गति बरकरार नहीं रह पाती है। यदि यह 1080p सेगमेंट डाउनलोड करने पर जोर देता है, तो वीडियो बफर हो जाएगा और रुक जाएगा।
- स्वचालित लेन परिवर्तन: HLS प्लेयर डाउनलोड गति में गिरावट का पता लगाता है और अगले खंड (उदाहरण के लिए, 5वें खंड) पर चुपचाप “480p लेन” पर स्विच कर देगा।
मुख्य बिंदु यह है: विभिन्न संकल्पों के खंड समयरेखा पर सख्ती से संरेखित होते हैं। 5वें 1080p खंड और 5वें 480p खंड में फ़ुटेज का समान सेकंड शामिल है। इसलिए, यह स्विच निर्बाध है। उपयोगकर्ता को केवल एक पल के लिए तस्वीर धुंधली महसूस होती है, लेकिन ध्वनि और क्रिया बाधित नहीं होती है।
यही कारण है कि नेटफ्लिक्स या यूट्यूब आपको अस्थिर नेटवर्क परिस्थितियों में भी आसानी से फिल्में देखने की सुविधा दे सकते हैं।
यदि HLS इतना अच्छा है, तो Live स्ट्रीमिंग में विलंब क्यों है?
आपने देखा होगा कि लाइव फ़ुटबॉल मैच देखते समय, आपका पड़ोसी गोल के लिए जयकार कर रहा होता है जबकि आपकी स्क्रीन पर खिलाड़ी अभी भी मिडफ़ील्ड में ड्रिबल कर रहे होते हैं। आम तौर पर, HLS लाइव स्ट्रीम में 10 से 30 सेकंड की विलंबता होती है।
यह HLS आर्किटेक्चर का “दुष्प्रभाव” है।
सहजता सुनिश्चित करने के लिए, प्लेयर को प्लेबैक शुरू करने से पहले आमतौर पर कम से कम 3 सेगमेंट को बफर करने की आवश्यकता होती है।
- यह मानते हुए कि प्रत्येक खंड को 10 सेकंड में काटा जाता है।
- प्लेयर बफ़र्स 3 खंड = 30 सेकंड विलंबता।
यद्यपि वर्तमान तकनीक यूडीपी/आरटीएमपी जैसे “पुश” प्रोटोकॉल की तुलना में सेगमेंट को छोटा कर सकती है (उदाहरण के लिए, 2-4 सेकंड) या लो-लेटेंसी HLS (LL-HLS) का उपयोग कर सकती है, HLS का फ़ाइल-आधारित “पुल” मोड स्वाभाविक रूप से अल्ट्रा-लो लेटेंसी के लिए डिज़ाइन नहीं किया गया है।
इसका लाभ स्थिरता में है, गति में नहीं।
निचली पंक्ति
HLS तीन प्रमुख लाभ: क्रॉस-डिवाइस संगतता, फ़ायरवॉल प्रवेश, CDN अनुकूल
स्ट्रीमिंग दुनिया में HLS के हावी होने का कारण यह नहीं है कि इसकी तकनीक सबसे उन्नत है, बल्कि इसलिए कि यह सबसे व्यावहारिक है।
- अपराजेय संगतता: iPhone से Android तक, Chrome से स्मार्ट टीवी तक, लगभग सभी डिवाइस HLS को मूल रूप से या बहुत आसानी से समर्थन करते हैं।
- मजबूत प्रवेश: यह मानक HTTP (पोर्ट 80/443) पर आधारित है, फ़ायरवॉल इसे सामान्य वेब ट्रैफ़िक के रूप में मानते हैं और इसे ब्लॉक नहीं करेंगे।
- कम लागत: आप महंगे समर्पित स्ट्रीमिंग सर्वर की आवश्यकता के बिना, साधारण सीडीएन का उपयोग करके सीधे HLS फ़ाइलें वितरित कर सकते हैं।
डेवलपर्स के लिए सलाह: यदि आप वीडियो ऑन डिमांड (VOD) प्लेटफ़ॉर्म या गैर-उच्च इंटरैक्टिव लाइव स्ट्रीम (जैसे खेल कार्यक्रम, संगीत कार्यक्रम) बना रहे हैं, तो HLS आपकी पहली पसंद है। यह न्यूनतम लागत पर सर्वोत्तम उपयोगकर्ता अनुभव प्रदान कर सकता है। लेकिन अगर आप रियल-टाइम वॉयस चैट या इंस्टेंट गेम स्ट्रीमिंग करना चाहते हैं, तो कृपया WebRTC का अध्ययन करें।
मुझे आशा है कि यह लेख आपको m3u8 के रहस्य को उजागर करने में मदद करेगा। अगली बार जब आप किसी वीडियो को धुंधला से साफ़ होते देखेंगे, तो आप जानबूझकर मुस्कुराएंगे: “आह, एबीआर ने मुझे लेन बदलने में मदद की।”