HTTP Live Streaming (HLS) Apple द्वारा विकसित एक एडेप्टिव मीडिया डेटा स्ट्रीमिंग प्रोटोकॉल है। HLS कंटेंट को छोटे सेगमेंट फ़ाइलों के अनुक्रम में विभाजित करके और M3U8 फ़ॉर्मेट में टेक्स्ट प्लेलिस्ट के माध्यम से प्लेबैक को प्रबंधित करके HTTP कनेक्शन पर वीडियो और ऑडियो वितरित करता है। Sandvine Internet Phenomena Report (2025) के अनुसार, HLS दुनिया के 65% से अधिक एडेप्टिव वीडियो स्ट्रीमिंग ट्रैफ़िक को संभालता है। यह प्रोटोकॉल सभी Apple प्लेटफ़ॉर्म पर समर्थित है और तृतीय-पक्ष लाइब्रेरी के माध्यम से Android, Windows और Smart TV पर उपलब्ध है।
मुख्य बिंदु
HTTP Live Streaming (HLS) Apple द्वारा 2009 में विकसित और पहली बार iOS 3.0 और Safari में प्रस्तुत एक मीडिया स्ट्रीमिंग प्रोटोकॉल है। 2017 में, RFC 8216 के माध्यम से प्रोटोकॉल को इंटरनेट मानक के रूप में प्रस्तावित किया गया, जिसने किसी भी प्लेटफ़ॉर्म पर कार्यान्वयन के लिए उपलब्ध एक खुली विशिष्टता के रूप में इसकी स्थिति की पुष्टि की।
HLS का मुख्य विचार एक सतत मीडिया स्ट्रीम को 2–10 सेकंड की छोटी अवधि के सेगमेंट में विभाजित करना है। प्रत्येक सेगमेंट एक स्वतंत्र फ़ाइल है जिसे नियमित HTTP अनुरोध के माध्यम से डाउनलोड किया जा सकता है। स्ट्रीम प्रबंधन M3U8 फ़ॉर्मेट में टेक्स्ट प्लेलिस्ट के माध्यम से किया जाता है, जिसमें सेगमेंट के संदर्भ और उनके सही प्लेबैक के लिए मेटाडेटा होता है।
अनुकूलनशीलता HLS का प्रमुख लाभ है। सर्वर विभिन्न बिटरेट पर एक ही कंटेंट के कई संस्करण तैयार करता है — कमजोर कनेक्शन के लिए 200 Kbps से लेकर 4K वीडियो के लिए 20+ Mbps तक। क्लाइंट वर्तमान चैनल बैंडविड्थ के आधार पर स्वचालित रूप से उपयुक्त बिटरेट का चयन करता है। Apple रिसर्च (WWDC 2024) के अनुसार, LL-HLS बिटरेट के बीच स्विच करने के समय को 500 मिलीसेकंड तक कम कर देता है, जिससे बिना ध्यान देने योग्य रुकावट के स्मूथ गुणवत्ता परिवर्तन सुनिश्चित होता है।
पहला संस्करण HLS (2009) केवल AAC ऑडियो कोडेक और H.264 वीडियो कोडेक के साथ MPEG-2 TS सेगमेंट का समर्थन करता था। iOS 8 (2014) ने fMP4 (fragmented MP4) सेगमेंट के लिए समर्थन जोड़ा, जिससे HLS को HEVC (H.265) सहित अधिक आधुनिक कोडेक के साथ उपयोग करना संभव हुआ। iOS 11 (2017) ने HDR10 और Dolby Vision के लिए समर्थन प्रस्तुत किया। iOS 13 (2019) ने Low-Latency HLS पेश किया, जिसने विलंबता को पारंपरिक 6–30 सेकंड से घटाकर 2–6 सेकंड कर दिया।
2023 में, Apple ने HLS को AV1 और EVC (Essential Video Coding) कोडेक के समर्थन के साथ विस्तारित किया, और कंटेंट स्टीयरिंग — इष्टतम लोड संतुलन के लिए CDN सर्वर के बीच क्लाइंट को गतिशील रूप से पुनर्निर्देशित करने की एक तंत्र — पेश किया। कंटेंट स्टीयरिंग सर्वर को प्लेबैक को बाधित किए बिना क्लाइंट को निकटतम या सबसे कम लोड वाले CDN नोड पर पुनर्निर्देशित करते हुए सेगमेंट URL को फ्लाई पर बदलने की अनुमति देता है।
HLS आर्किटेक्चर में तीन मुख्य घटक होते हैं: सर्वर पक्ष (मूल सर्वर + एन्कोडर), वितरण नेटवर्क (CDN), और क्लाइंट पक्ष (HLS समर्थन वाला प्लेयर)। पूरी प्रक्रिया — वीडियो कैप्चर से लेकर उपयोगकर्ता के डिवाइस पर प्लेबैक तक — कई अनुक्रमिक चरण शामिल करती है, जिनमें से प्रत्येक स्ट्रीमिंग गुणवत्ता के लिए महत्वपूर्ण है।
स्रोत वीडियो को पहले विभिन्न बिटरेट और रिज़ॉल्यूशन पर कई वेरिएंट में एन्कोड किया जाता है। FFmpeg या AWS Elemental MediaConvert जैसे पेशेवर एन्कोडर एक साथ 4–12 स्ट्रीम वेरिएंट बनाते हैं: 240p (400 Kbps) से 4K (40 Mbps) तक। प्रत्येक वेरिएंट को समान अवधि के सेगमेंट में विभाजित किया जाता है, आमतौर पर LL-HLS के लिए 2–6 सेकंड या पारंपरिक HLS के लिए 6–10 सेकंड।
प्रत्येक वेरिएंट के लिए एक वेरिएंट प्लेलिस्ट बनाई जाती है जिसमें सभी सेगमेंट के URL और उनकी अवधि होती है। इसके अतिरिक्त, एक मास्टर प्लेलिस्ट बनाई जाती है जो सभी वेरिएंट को जोड़ती है और प्रत्येक के बारे में जानकारी रखती है: रिज़ॉल्यूशन, बिटरेट, कोडेक और ऑडियो ट्रैक। क्लाइंट पहले मास्टर प्लेलिस्ट लोड करता है, फिर कनेक्शन गति विश्लेषण के आधार पर उपयुक्त वेरिएंट का चयन करता है।
सेगमेंट और प्लेलिस्ट भौगोलिक रूप से उपयोगकर्ताओं के करीब स्थित CDN सर्वर पर कैश की जाती हैं। वितरण के लिए मानक HTTP प्रोटोकॉल का उपयोग HLS को एक महत्वपूर्ण लाभ देता है: कोई भी CDN, लोड बैलेंसर या प्रॉक्सी सर्वर जो HTTP का समर्थन करता है, बिना अतिरिक्त कॉन्फ़िगरेशन के HLS के साथ काम करता है। यह HLS को RTMP या WebRTC जैसे रीयल-टाइम प्रोटोकॉल से अलग करता है, जिन्हें विशेष सर्वर की आवश्यकता होती है।
import subprocess
subprocess.run([
"ffmpeg",
"-i", "input.mp4",
"-codec:v", "libx264",
"-codec:a", "aac",
"-hls_time", "6",
"-hls_list_size", "0",
"-var_stream_map", "v:0,a:0 v:1,a:1",
"-map", "v:0", "-b:v:0", "5000k",
"-map", "v:1", "-b:v:1", "1000k",
"-f", "hls",
"stream/output.m3u8"
])
क्लाइंट पक्ष एडेप्टिव बिटरेट एल्गोरिदम (ABR) का उपयोग करता है। HLS प्लेयर मास्टर प्लेलिस्ट लोड करता है, उपलब्ध वेरिएंट का विश्लेषण करता है, और सबसे उपयुक्त बिटरेट पर प्लेबैक शुरू करता है। प्लेबैक के दौरान, प्लेयर लगातार सेगमेंट डाउनलोड गति और बफ़र भरने के स्तर की निगरानी करता है, उच्च या निम्न बिटरेट पर स्विच करने का निर्णय लेता है। आधुनिक ABR एल्गोरिदम न केवल नेटवर्क गति बल्कि बफ़र आकार, कंटेंट प्रकार और यहां तक कि डिवाइस की बिजली खपत को भी ध्यान में रखते हैं।
एन्कोडिंग, वितरण को सही ढंग से कॉन्फ़िगर करने और प्लेबैक समस्याओं को डीबग करने के लिए HLS स्ट्रीम की संरचना को समझना आवश्यक है। प्रत्येक HLS स्ट्रीम में दो स्तरों की प्लेलिस्ट और कई मीडिया सेगमेंट होते हैं जो एक सख्त पदानुक्रम में व्यवस्थित होते हैं।
मास्टर प्लेलिस्ट HLS प्लेयर के लिए प्रवेश बिंदु है। .m3u8 एक्सटेंशन वाली फ़ाइल में सभी स्ट्रीम वेरिएंट और उनकी विशेषताओं के संदर्भ होते हैं। प्लेयर पहले इस फ़ाइल को लोड करता है और बिटरेट और रिज़ॉल्यूशन के बारे में जानकारी के आधार पर वेरिएंट चुनने का प्रारंभिक निर्णय लेता है। मास्टर प्लेलिस्ट में वैकल्पिक ऑडियो ट्रैक, उपशीर्षक और तेज़ स्किपिंग के लिए I-Frame प्लेलिस्ट के संदर्भ भी हो सकते हैं।
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080
1080p/video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360
360p/video.m3u8
मीडिया प्लेलिस्ट में एक स्ट्रीम वेरिएंट के लिए सेगमेंट की वास्तविक सूची होती है। प्रत्येक सेगमेंट को उसकी अवधि और URI के साथ निर्दिष्ट किया जाता है। मीडिया प्लेलिस्ट स्थिर (VOD के लिए — सभी सेगमेंट की पूरी सूची) या गतिशील रूप से अपडेट होने वाली (लाइव प्रसारण के लिए — पुराने सेगमेंट हटा दिए जाते हैं, नए जोड़े जाते हैं) हो सकती है।
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXTINF:6.000,
segment001.ts
#EXTINF:6.000,
segment002.ts
#EXT-X-ENDLIST
HLS दो मुख्य मीडिया सेगमेंट फ़ॉर्मेट का समर्थन करता है: MPEG-2 Transport Stream (.ts) और Fragmented MP4 (.m4s या .mp4)। MPEG-2 TS मूल HLS फ़ॉर्मेट है, जो अधिकतम संगतता प्रदान करता है। fMP4 एक अधिक आधुनिक फ़ॉर्मेट है जो HDR, HEVC और अधिक कुशल संपीड़न का समर्थन करता है। Apple iOS 10 और macOS Sierra से शुरू होने वाली सभी नई परियोजनाओं के लिए fMP4 की सिफारिश करता है।
अतिरिक्त HLS स्ट्रीम तत्वों में तेज़ स्किपिंग के लिए I-Frame प्लेलिस्ट, उपशीर्षक और विज्ञापन मार्करों को सिंक्रनाइज़ करने के लिए ID3 मेटाडेटा, और एनालिटिक्स सर्वर पर देखने की जानकारी प्रसारित करने के लिए Session Data शामिल हैं। ये सभी तत्व वैकल्पिक हैं, लेकिन उनका उपयोग उपयोगकर्ता अनुभव की गुणवत्ता में सुधार करता है।
HLS कई आर्किटेक्चरल लाभों के कारण वीडियो स्ट्रीमिंग बाजार पर हावी है, लेकिन इसमें सीमाएँ भी हैं जिन्हें किसी विशिष्ट परियोजना के लिए प्रोटोकॉल चुनते समय ध्यान में रखा जाना चाहिए। आइए HLS की तुलना वैकल्पिक वीडियो वितरण प्रोटोकॉल से करें।
| विशेषता | HLS | DASH | RTMP |
|---|---|---|---|
| परिवहन | HTTP (80/443) | HTTP (80/443) | TCP (1935) |
| अनुकूलनशीलता | हाँ (ABR) | हाँ (ABR) | नहीं |
| कम विलंबता | 2‖ सेकंड (LL-HLS) | 3–8 सेकंड (LL-DASH) | 0.5–2 सेकंड |
| HDR समर्थन | हाँ (iOS 11+) | हाँ | सीमित |
| मूल iOS | हाँ (Safari, AVPlayer) | तृतीय-पक्ष प्लेयर के माध्यम से | नहीं |
| CDN सरलता | अधिकतम (HTTP) | अधिकतम (HTTP) | विशेष सर्वर |
मुख्य लाभ HLS का सभी Apple उपकरणों (iPhone, iPad, Apple TV, Mac) पर बिल्ट-इन AVPlayer के माध्यम से मूल समर्थन है। यह HLS को iOS/macOS एप्लिकेशन के लिए डी-फैक्टो मानक बनाता है। इसके अलावा, वितरण के लिए मानक HTTP का उपयोग बिना अतिरिक्त कॉन्फ़िगरेशन के किसी भी CDN और प्रॉक्सी सर्वर पर कंटेंट को कैश करने की अनुमति देता है, जो वितरण बुनियादी ढांचे को काफी सरल बनाता है।
HLS के नुकसान में लाइव प्रसारण के लिए RTMP या WebRTC की तुलना में अधिक विलंबता शामिल है। LL-HLS के साथ भी, न्यूनतम विलंबता 2–6 सेकंड है, जो रीयल-टाइम इंटरैक्टिव परिदृश्यों के लिए अस्वीकार्य है। साथ ही, HLS सर्वर पर अधिक फ़ाइलें उत्पन्न करता है (प्रत्येक सेगमेंट एक अलग फ़ाइल है), जो बड़ी संख्या में एक साथ स्ट्रीम के साथ फ़ाइल सिस्टम पर लोड बना सकता है।
मोबाइल एप्लिकेशन में HLS का एकीकरण प्लेटफ़ॉर्म के आधार पर भिन्न होता है। iOS और macOS पर, HLS ऑपरेटिंग सिस्टम स्तर पर AVFoundation और AVPlayer के माध्यम से समर्थित है, जो हार्डवेयर-त्वरित डिकोडिंग और न्यूनतम बिजली खपत प्रदान करता है। Android पर, HLS बिल्ट-इन MediaPlayer द्वारा समर्थित नहीं है लेकिन Google के आधिकारिक मीडिया प्लेयर ExoPlayer के माध्यम से उपलब्ध है।
Apple प्लेटफ़ॉर्म पर, AVPlayer में बिल्ट-इन समर्थन के कारण HLS प्लेबैक बेहद सरल है। बस मास्टर प्लेलिस्ट URL के साथ एक AVPlayer बनाएं, और सिस्टम स्वचालित रूप से एडेप्टिव बिटरेट स्विचिंग, ऑडियो ट्रैक चयन और उपशीर्षक प्रसंस्करण को संभालता है। डेवलपर को AVPlayerItem और AVAssetResourceLoader के माध्यम से प्लेबैक पर पूर्ण नियंत्रण भी मिलता है।
import AVFoundation
let url = URL(string: "https://example.com/stream.m3u8")!
let player = AVPlayer(url: url)
let controller = AVPlayerViewController()
controller.player = player
present(controller, animated: true) {
player.play()
}
Android के लिए ExoPlayer का उपयोग किया जाता है, जो एक अलग एक्सटेंशन मॉड्यूल के माध्यम से HLS का समर्थन करता है। ExoPlayer HLS स्ट्रीम पर अधिक सूक्ष्म नियंत्रण प्रदान करता है: बिटरेट चयन प्रबंधित करना, बफ़रिंग कॉन्फ़िगर करना और सेगमेंट लोडिंग त्रुटियों को व्यक्तिगत रूप से संभालना संभव है। LL-HLS के लिए ExoPlayer संस्करण 2.14.0 या उच्चतर आवश्यक है।
val player = ExoPlayer.Builder(this).build()
val uri = Uri.parse("https://example.com/stream.m3u8")
val mediaItem = MediaItem.fromUri(uri)
player.setMediaItem(mediaItem)
player.prepare()
player.play()
मोबाइल एप्लिकेशन को सेल्युलर नेटवर्क की अस्थिरता और ट्रैफ़िक सीमाओं के कारण HLS कॉन्फ़िगरेशन के लिए एक विशेष दृष्टिकोण की आवश्यकता होती है। मुख्य अनुशंसाओं में शामिल हैं: नेटवर्क प्रकार (Wi-Fi या सेल्युलर) के आधार पर प्रारंभिक बिटरेट कॉन्फ़िगर करना, तेज़ अनुकूलन के लिए छोटी सेगमेंट अवधि (2–4 सेकंड) का उपयोग करना, Wi-Fi पर स्विच करते समय बफ़र को पहले से लोड करना और कमजोर सिग्नल पर ऑडियो ट्रैक को प्राथमिकता देना।
Apple HLS Authoring Specification for Apple Devices (2024) में मोबाइल उपकरणों के लिए अधिकतम 6 सेकंड के सेगमेंट आकार और कम से कम 4 बिटरेट वेरिएंट का उपयोग करने की सिफारिश करता है। मोबाइल नेटवर्क पर ट्रैफ़िक बचाने के लिए, सर्वर को Cache-Control HTTP हेडर के साथ सेगमेंट वितरित करना चाहिए, जिससे दूरसंचार ऑपरेटरों के मध्यवर्ती प्रॉक्सी सर्वर पर कंटेंट कैश किया जा सके।
अक्सर पूछे जाने वाले प्रश्न
MP4 एक संपूर्ण वीडियो फ़ाइल को संग्रहीत करने के लिए एक कंटेनर है जिसे प्लेबैक शुरू होने से पहले पूरी तरह से डाउनलोड किया जाना चाहिए। HLS वीडियो को छोटे सेगमेंट में विभाजित करता है और पहले सेगमेंट को लोड करने के 2–6 सेकंड बाद देखना शुरू करने की अनुमति देता है, इंटरनेट गति के अनुसार गुणवत्ता को स्वचालित रूप से अनुकूलित करता है।
हाँ, HLS को Apple सर्वर सॉफ़्टवेयर की आवश्यकता नहीं है। कोई भी HTTP सर्वर (Nginx, Apache, CDN) HLS कंटेंट वितरित कर सकता है। वीडियो को HLS में एन्कोड करने के लिए FFmpeg या पेशेवर एन्कोडर का उपयोग किया जाता है। एकमात्र आवश्यकता .m3u8 फ़ाइलों के लिए सही MIME-प्रकार कॉन्फ़िगरेशन है।
हाँ, HLS मूल रूप से लाइव प्रसारण के लिए विकसित किया गया था। लाइव प्रसारण के दौरान, मीडिया प्लेलिस्ट गतिशील रूप से अपडेट होती है: सर्वर नए सेगमेंट जोड़ता है और पुराने हटाता है। Low-Latency HLS (LL-HLS) विलंबता को 2–6 सेकंड तक कम करता है, जिससे HLS खेल और समाचार प्रसारण के लिए उपयुक्त हो जाता है।
मास्टर प्लेलिस्ट विभिन्न बिटरेट और रिज़ॉल्यूशन पर एक ही कंटेंट के सभी वेरिएंट को जोड़ती है। प्लेयर इसे पहले लोड करता है, प्रत्येक वेरिएंट की विशेषताओं (बिटरेट, रिज़ॉल्यूशन, कोडेक) का विश्लेषण करता है, और वर्तमान नेटवर्क स्थितियों के लिए इष्टतम का चयन करता है। मास्टर प्लेलिस्ट के बिना, एडेप्टिव गुणवत्ता स्विचिंग असंभव है।
HLS सेगमेंट के AES-128 एन्क्रिप्शन और DRM सिस्टम: FairPlay Streaming (Apple), Widevine (Google) और PlayReady (Microsoft) के साथ एकीकरण का समर्थन करता है। एन्क्रिप्शन कुंजियाँ एक अलग सुरक्षित चैनल पर प्रेषित की जाती हैं। अतिरिक्त सुरक्षा के लिए प्लेलिस्ट एक्सेस के लिए टोकन-आधारित प्रमाणीकरण का उपयोग किया जाता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें