Dynamic Adaptive Streaming over HTTP (DASH) मल्टीमीडिया की एडेप्टिव स्ट्रीमिंग के लिए एक अंतर्राष्ट्रीय मानक है, जिसे MPEG (Moving Picture Experts Group) द्वारा विकसित किया गया है। DASH, Media Presentation Description (MPD) प्रारूप में XML स्ट्रीम विवरण का उपयोग करके HTTP के माध्यम से वीडियो और ऑडियो प्रदान करता है और कंटेंट को विभिन्न बिटरेट के सेगमेंट में विभाजित करता है। Bitmovin Video Developer Report (2025) के अनुसार, 58% वीडियो डेवलपर्स DASH का उपयोग करते हैं, जो इसे HLS के बाद दूसरा सबसे लोकप्रिय प्रोटोकॉल बनाता है।
मुख्य बिंदु
MPEG-DASH (Dynamic Adaptive Streaming over HTTP) एक अंतर्राष्ट्रीय मानक ISO/IEC 23009-1 है, जो 2012 में मालिकाना एडेप्टिव स्ट्रीमिंग समाधानों के विखंडन के जवाब में प्रकाशित हुआ। HLS (Apple का मालिकाना प्रोटोकॉल) और Smooth Streaming (Microsoft) के विपरीत, DASH शुरू से ही एक खुले, विक्रेता-स्वतंत्र मानक के रूप में विकसित किया गया था, जिसने उद्योग में इसका व्यापक समर्थन सुनिश्चित किया।
DASH का मुख्य नवाचार स्ट्रीम विवरण और मीडिया सामग्री का पृथक्करण है। स्ट्रीम विवरण को MPD (Media Presentation Description) नामक XML फ़ाइल में संग्रहीत किया जाता है, जिसमें उपलब्ध विकल्पों के बारे में सारी जानकारी होती है: बिटरेट, रिज़ॉल्यूशन, कोडेक, सबटाइटल, ऑडियो ट्रैक। मीडिया सामग्री अलग-अलग सेगमेंट (आमतौर पर fMP4) में संग्रहीत की जाती है, जिसे HTTP के माध्यम से स्वतंत्र रूप से लोड किया जा सकता है। यह आर्किटेक्चर सर्वर इंफ्रास्ट्रक्चर को यथासंभव सरल बनाने की अनुमति देता है — कोई भी HTTP सर्वर DASH सामग्री वितरित कर सकता है।
DASH में अनुकूलनशीलता सामग्री वेरिएंट के मल्टीप्लेक्सिंग के माध्यम से कार्यान्वित की जाती है। सर्वर कई Representation तैयार करता है — विभिन्न संपीड़न मापदंडों के साथ सामग्री की प्रतियां। क्लाइंट चैनल बैंडविड्थ का विश्लेषण करता है और गुणवत्ता और प्लेबैक स्थिरता के इष्टतम संतुलन का चयन करते हुए, प्रतिनिधित्वों के बीच गतिशील रूप से स्विच करता है। एक अकादमिक अध्ययन (IEEE Access, 2024) के अनुसार, BOLA एल्गोरिदम के साथ DASH अस्थिर कनेक्शन पर HLS की तुलना में 22% कम बिटरेट स्विच दिखाता है।
MPEG ने मौजूदा समाधानों: Apple HLS, Microsoft Smooth Streaming और Adobe HDS का विश्लेषण करने के बाद 2010 में DASH पर काम शुरू किया। मानक का पहला संस्करण (ISO/IEC 23009-1:2012) 2012 में जारी हुआ। दूसरे संस्करण (2014) ने ईवेंट के लिए समर्थन, बेहतर विज्ञापन सम्मिलन और सर्वर-नियंत्रित अनुकूलन जोड़ा। तीसरे संस्करण (2019) ने HDR, 8K, हैप्टिक वीडियो और 5G नेटवर्क के लिए MMT (MPEG Media Transport) के साथ बेहतर एकीकरण के लिए समर्थन जोड़ा।
2024 में, MPEG ने DASH Next Generation की घोषणा की, जिसमें न्यूरल नेटवर्क कोडेक, क्लाउड रेंडरिंग और एक्सटेंडेड रियलिटी (XR) परिदृश्यों के लिए अनुकूलन शामिल हैं। एक प्रमुख नवाचार न्यूरल नेटवर्क-आधारित वीडियो कोडिंग (NNVC) है, जो क्लाइंट-साइड डिकोडिंग के लिए ML मॉडल का उपयोग करता है, जो गुणवत्ता बनाए रखते हुए बिटरेट को 30-50% तक कम कर सकता है।
DASH स्ट्रीम प्लेबैक प्रक्रिया में चार क्रमिक चरण होते हैं: MPD प्राप्त करना, स्ट्रीम विवरण पार्स करना, प्रारंभिक प्रतिनिधित्व का चयन करना, और प्रतिनिधित्वों के बीच गतिशील स्विचिंग। प्रत्येक चरण की अपनी विशिष्टताएँ होती हैं जो उपयोगकर्ता अनुभव की गुणवत्ता को प्रभावित करती हैं।
प्लेयर ज्ञात URL से MPD फ़ाइल लोड करता है। MPD में संपूर्ण स्ट्रीम का वर्णन करने वाली XML संरचना होती है: सामग्री अवधि, टाइमलाइन, उपलब्ध अवधि (Period), अनुकूलन सेट (AdaptationSet), और विशिष्ट एन्कोडिंग पैरामीटर वाले प्रतिनिधित्व (Representation)। प्लेयर MPD को पार्स करता है और उपलब्ध मीडिया संसाधनों का एक आंतरिक मॉडल बनाता है।
दो रिज़ॉल्यूशन वाली VOD सामग्री के लिए बुनियादी MPD फ़ाइल का उदाहरण:
<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
type="static"
mediaPresentationDuration="PT1H30M">
<Period duration="PT1H30M">
<AdaptationSet mimeType="video/mp4">
<Representation bandwidth="5000000"
width="1920" height="1080"
codecs="avc1.640028"/>
<Representation bandwidth="1000000"
width="640" height="360"
codecs="avc1.64001E"/>
</AdaptationSet>
</Period>
</MPD>
प्रारंभिक प्रतिनिधित्व का चयन करने के बाद, प्लेयर सेगमेंट लोड करना शुरू करता है। प्रत्येक सेगमेंट में कई सेकंड की सामग्री (आमतौर पर 2-10 सेकंड) होती है। प्लेयर कई सेगमेंट आगे का बफर बनाए रखता है, जो नेटवर्क गति में अल्पकालिक गिरावट के प्रति लचीलापन सुनिश्चित करता है। ABR (एडेप्टिव बिटरेट) एल्गोरिदम लगातार सेगमेंट डाउनलोड गति की निगरानी करता है और उपलब्ध बिटरेट के बीच स्विच करने का निर्णय लेता है।
DASH के लिए आधुनिक ABR एल्गोरिदम, जैसे BOLA (Buffer Occupancy based Lyapunov Algorithm) और Pensieve (Reinforcement Learning पर आधारित), न केवल वर्तमान बैंडविड्थ बल्कि बफर आकार, सामग्री प्रकार (खेल, समाचार, फिल्में) और यहां तक कि डिवाइस की बिजली खपत को भी ध्यान में रखते हैं। BOLA, जो dash.js और ExoPlayer का हिस्सा है, स्थिर बफर बनाए रखते हुए बिटरेट स्विच की संख्या को कम करता है, जैसा कि ACM अनुसंधान (Spiteri et al., 2020) द्वारा पुष्टि की गई है।
DASH स्ट्रीम की पदानुक्रमित संरचना चार स्तरों में व्यवस्थित है: MPD → Period → AdaptationSet → Representation। प्रत्येक स्तर विस्तार की एक परत जोड़ता है, जो सरल VOD से लेकर विज्ञापन सम्मिलन और मल्टी-एंगल वीडियो के साथ लाइव प्रसारण तक जटिल परिदृश्यों का वर्णन करने की अनुमति देता है।
MPD मूल तत्व है जो संपूर्ण मीडिया प्रस्तुति का वर्णन करता है। MPD विशेषताएँ स्ट्रीम प्रकार (VOD के लिए static, लाइव के लिए dynamic), कुल अवधि, टाइमलाइन, प्रोफ़ाइल और DRM जानकारी को परिभाषित करती हैं। MPD में एक या अधिक Period हो सकते हैं, जिनमें से प्रत्येक सामग्री के एक स्वतंत्र समय खंड का प्रतिनिधित्व करता है।
Period प्रस्तुति का एक समय खंड है। VOD के लिए, संपूर्ण सामग्री के लिए एक ही Period का उपयोग किया जाता है। विज्ञापन ब्रेक के साथ लाइव के लिए, Period गतिशील रूप से बदल सकता है — प्लेयर अपडेटेड MPD लोड करता है और विज्ञापन ब्लॉक के अनुरूप एक नया Period खोजता है। प्रत्येक Period में एक या अधिक AdaptationSet होते हैं।
AdaptationSet एक मीडिया प्रकार के विनिमेय प्रतिनिधित्वों का एक समूह है: वीडियो, ऑडियो, सबटाइटल। AdaptationSet के भीतर, सभी प्रतिनिधित्व केवल बिटरेट और/या रिज़ॉल्यूशन में भिन्न होते हैं लेकिन समान सामग्री को एन्कोड करते हैं। एक महत्वपूर्ण गुण: प्लेयर प्लेबैक में रुकावट के बिना सेगमेंट सीमाओं पर एक ही AdaptationSet के भीतर प्रतिनिधित्वों के बीच स्विच कर सकता है।
Representation एक निश्चित बिटरेट, रिज़ॉल्यूशन और कोडेक के साथ एक विशिष्ट एन्कोडिंग वेरिएंट है। प्रत्येक Representation के लिए, MPD सेगमेंट लोड करने के लिए एक URL टेम्पलेट निर्दिष्ट करता है। DASH एक लचीली सेगमेंट एड्रेसिंग सिस्टम का उपयोग करता है — सेगमेंट नंबर और समय प्रतिस्थापन ($Number$, $Time$) के साथ URL टेम्पलेट के माध्यम से, जो सर्वर को MPD में प्रत्येक सेगमेंट को सूचीबद्ध किए बिना गतिशील रूप से फ़ाइल नाम उत्पन्न करने की अनुमति देता है।
DASH में सेगमेंट दो प्रकार के हो सकते हैं: Segment प्रकार (केवल मीडिया डेटा होता है) और Subsegment प्रकार (अधिक सूक्ष्म पहुंच के लिए सेगमेंट का हिस्सा)। DASH सामग्री को एन्कोड करने के लिए FFmpeg या बैच एन्कोडर जैसे टूल का उपयोग किया जाता है। इनपुट फ़ाइल से DASH स्ट्रीम बनाने का उदाहरण:
import subprocess
subprocess.run([
"ffmpeg",
"-i", "input.mp4",
"-filter_complex",
"[0:v]split=2[v1][v2];[v1]scale=1920:1080[v1out];[v2]scale=640:360[v2out]",
"-map", "[v1out]", "-b:v:0", "5000k",
"-map", "[v2out]", "-b:v:1", "1000k",
"-map", "0:a",
"-f", "dash",
"-seg_duration", "4",
"-use_template", "1",
"-use_timeline", "1",
"dash/stream.mpd"
])
DASH और HLS के बीच चुनाव वीडियो स्ट्रीमिंग सिस्टम डिज़ाइन करते समय प्रमुख निर्णयों में से एक है। दोनों प्रोटोकॉल एक ही समस्या (HTTP पर एडेप्टिव वीडियो वितरण) को हल करते हैं, लेकिन आर्किटेक्चर, कोडेक समर्थन और पारिस्थितिकी तंत्र में मूलभूत अंतर रखते हैं। आइए उनकी तुलना प्रमुख मापदंडों पर करें।
| पैरामीटर | DASH | HLS |
|---|---|---|
| मानक | अंतर्राष्ट्रीय (ISO/IEC 23009-1) | मालिकाना (RFC 8216, Apple) |
| स्ट्रीम विवरण | XML (MPD) | M3U8 प्लेलिस्ट |
| कोडेक | कोई भी (H.264, HEVC, AV1, VP9) | सीमित (H.264, HEVC, 2023 से AV1) |
| सेगमेंट प्रारूप | fMP4 (मुख्य), MPEG-2 TS | MPEG-2 TS, fMP4 |
| DRM | CENC (सभी DRM के लिए एकीकृत) | FairPlay, Widevine (अलग-अलग) |
| iOS समर्थन | तृतीय-पक्ष प्लेयर के माध्यम से | मूल (AVPlayer, Safari) |
| ब्राउज़र | Chrome, Firefox, Edge (MSE के माध्यम से) | Safari (मूल), अन्य MSE के माध्यम से |
मुख्य लाभ DASH का — कोडेक स्वतंत्रता। जहां HLS मूल रूप से कोडेक को Apple (H.264, HEVC, और हाल ही में AV1) द्वारा समर्थित तक सीमित करता था, वहीं DASH प्लेयर द्वारा समर्थित किसी भी कोडेक का उपयोग कर सकता है: VP9/VP8 (YouTube और Chrome के लिए महत्वपूर्ण), AV1 (दक्षता के लिए), H.264/HEVC (संगतता के लिए)। यह DASH को क्रॉस-प्लेटफ़ॉर्म सेवाओं के लिए पसंदीदा विकल्प बनाता है जहां सभी उपकरणों के लिए एकीकृत स्ट्रीम की आवश्यकता होती है।
नुकसान iOS पर DASH का — Safari और AVPlayer में मूल समर्थन की कमी। iOS डेवलपर्स को तृतीय-पक्ष HLS-संगत प्लेयर या VTDecoder के माध्यम से एकीकरण के साथ libdash जैसी लाइब्रेरी का उपयोग करने की आवश्यकता है। व्यवहार में, इसका मतलब है कि iOS-प्रथम परियोजनाओं के लिए, HLS वास्तविक मानक बना हुआ है, जबकि Android और वेब प्लेटफ़ॉर्म के लिए, DASH अधिक लचीला और शक्तिशाली समाधान है।
मोबाइल एप्लिकेशन में DASH का एकीकरण प्लेटफ़ॉर्म पर निर्भर करता है। Android पर, DASH एक्सटेंशन मॉड्यूल के साथ सीधे ExoPlayer के माध्यम से समर्थित है। iOS पर, AVFoundation या MPEGDASHPlayer के माध्यम से एकीकरण के साथ libdash जैसी तृतीय-पक्ष लाइब्रेरी की आवश्यकता होती है। आइए दोनों प्लेटफ़ॉर्म के लिए व्यावहारिक कार्यान्वयन देखें।
Google का ExoPlayer `exoplayer-dash` मॉड्यूल के माध्यम से DASH के लिए अंतर्निहित समर्थन प्रदान करता है। DASH स्ट्रीम कनेक्ट करना अन्य प्रारूपों से अलग नहीं है — बस MediaItem में MPD फ़ाइल का URI पास करें। ExoPlayer स्वचालित रूप से सामग्री प्रारूप का पता लगाता है और उपयुक्त रेंडरर लॉन्च करता है, सभी मानक ABR एल्गोरिदम का समर्थन करता है।
val player = ExoPlayer.Builder(this).build()
val dashMediaItem = MediaItem
.Builder()
.setUri("https://example.com/dash/stream.mpd")
.setMimeType("application/dash+xml")
.build()
player.setMediaItem(dashMediaItem)
player.prepare()
player.playWhenReady = true
Common Encryption (CENC) DASH की प्रमुख विशेषताओं में से एक है, जो विभिन्न DRM सिस्टम के साथ एकल मीडिया स्ट्रीम के उपयोग की अनुमति देता है। MPD फ़ाइल में DRM सिस्टम पहचानकर्ताओं (Widevine, PlayReady, FairPlay) के साथ ContentProtection XML तत्व होते हैं। क्लाइंट अपने प्लेटफ़ॉर्म के आधार पर उपयुक्त DRM सिस्टम का चयन करता है और लाइसेंस सर्वर से लाइसेंस का अनुरोध करता है।
val drmLicenseUri = Uri.parse("https://license.example.com/wv")
val drmSessionManager = DefaultDrmSessionManager
.Builder()
.setUuidAndExoMediaDrmProvider(
C.WIDEVINE_UUID,
FrameworkMediaDrm.DEFAULT_PROVIDER
)
.build(drmLicenseUri, null)
val mediaItem = MediaItem
.Builder()
.setUri("https://example.com/encrypted/stream.mpd")
.setDrmConfiguration(
MediaItem.DrmConfiguration.Builder(C.WIDEVINE_UUID)
.setLicenseUri("https://license.example.com/wv")
.build()
)
.build()
मोबाइल एप्लिकेशन को बैंडविड्थ और बिजली खपत की सीमाओं के कारण विशेष DASH कॉन्फ़िगरेशन की आवश्यकता होती है। मुख्य अनुशंसाओं में शामिल हैं: अल्पकालिक गति गिरावट के प्रति लचीलापन के लिए न्यूनतम 2-3 सेगमेंट का बफर सेट करना, नेटवर्क परिवर्तनों पर तेज़ प्रतिक्रिया के लिए 2-4 सेकंड लंबे सेगमेंट का उपयोग करना, और गुणवत्ता स्विच करते समय अगले सेगमेंट को प्रीलोड करना।
मोबाइल नेटवर्क पर ट्रैफ़िक बचाने के लिए, Bitmovin (2024) Content Steering का उपयोग करने की अनुशंसा करता है — HLS के समान फ़ंक्शन के समान एक तंत्र, जो क्लाइंट को गतिशील रूप से इष्टतम CDN नोड पर निर्देशित करने की अनुमति देता है। DASH Content Steering को ISO/IEC 23009-1:2022 विनिर्देश में वर्णित किया गया है और dash.js 4.5+ और ExoPlayer 2.18+ में समर्थित है।
अक्सर पूछे जाने वाले प्रश्न
DASH एक खुला अंतर्राष्ट्रीय MPEG मानक है, जो किसी विक्रेता से बंधा नहीं है। HLS (Apple के मालिकाना प्रोटोकॉल) के विपरीत, DASH किसी भी कोडेक का समर्थन करता है, M3U8 के बजाय XML स्ट्रीम विवरण (MPD) का उपयोग करता है, और CENC के माध्यम से एकीकृत DRM सिस्टम प्रदान करता है। HLS का iOS पर मूल समर्थन है, जबकि DASH क्रॉस-प्लेटफ़ॉर्म समाधानों के लिए अधिक लचीला है।
Android पर, DASH के लिए प्राथमिक प्लेयर exoplayer-dash मॉड्यूल के साथ Google का ExoPlayer है। iOS पर, AVFoundation के माध्यम से एकीकरण के साथ libdash या वाणिज्यिक प्लेयर (THEOplayer, Bitmovin) जैसे तृतीय-पक्ष समाधानों का उपयोग किया जाता है। वेब ब्राउज़र में, DASH को MediaSource Extensions का उपयोग करके dash.js के माध्यम से चलाया जाता है।
MPD (Media Presentation Description) एक XML फ़ाइल है जो DASH स्ट्रीम संरचना का वर्णन करती है: सामग्री अवधि, उपलब्ध बिटरेट, रिज़ॉल्यूशन, कोडेक, सेगमेंट प्रारूप और उनके स्थान। MPD प्लेयर के लिए प्रवेश बिंदु के रूप में कार्य करता है, HLS में मास्टर प्लेलिस्ट को बदलता है। MPD फ़ाइल के बिना, DASH सामग्री प्लेबैक संभव नहीं है।
हाँ, DASH VOD और लाइव प्रसारण दोनों का समर्थन करता है। लाइव के लिए, स्वचालित अपडेट के साथ dynamic MPD प्रकार का उपयोग किया जाता है। सर्वर समय-समय पर MPD को अपडेट करता है, नए सेगमेंट जोड़ता है और पुराने को हटाता है। चंकड एन्कोडिंग के साथ Low-Latency DASH (LL-DASH) 3-8 सेकंड की विलंबता प्राप्त करता है, जो LL-HLS के बराबर है।
DASH Common Encryption (CENC, ISO/IEC 23001-7) का उपयोग करता है, जो मीडिया सामग्री को एक बार एन्क्रिप्ट करने और किसी भी DRM सिस्टम द्वारा डिक्रिप्ट करने की अनुमति देता है। MPD में समर्थित DRM (Widevine, PlayReady, FairPlay) को इंगित करने वाले ContentProtection XML तत्व होते हैं। प्लेयर प्लेटफ़ॉर्म के आधार पर उपयुक्त DRM का चयन करता है और निर्दिष्ट URL के माध्यम से लाइसेंस का अनुरोध करता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें