DASH — bu nima, protokol va dinamik strimingning ishlash prinsipi

Muallif: IT Sectr Nashr etilgan: 2026-05-23 O'qish vaqti: 9 daq

Dynamic Adaptive Streaming over HTTP (DASH) — MPEG (Moving Picture Experts Group) tomonidan ishlab chiqilgan adaptiv multimedia oqimini uzatish xalqaro standartidir. DASH, XML formatidagi Media Presentation Description (MPD) yordamida oqim tavsifidan foydalanib va kontentni turli bitrate segmentlarga bo'lib, video va audio ni HTTP orqali yetkazib beradi. Bitmovin Video Developer Report (2025) tadqiqotiga ko'ra, video ishlab chiqaruvchilarning 58 foizi DASH dan foydalanadi va bu uni HLS dan keyin ikkinchi eng mashhur protokolga aylantiradi.

Asosiy ma'lumotlar

  • DASH — HTTP orqali adaptiv oqim uzatish uchun ochiq xalqaro MPEG standarti.
  • MPD fayli (Media Presentation Description) davrlar va adaptatsiya to'plamlari tavsifi bilan XML strukturasi orqali oqimni boshqaradi.
  • Kodeklar spetsifikatsiya bilan cheklanmagan — DASH H.264, HEVC, AV1, VP9, AAC va boshqalarni qo'llab-quvvatlaydi.
  • DRM Widevine, PlayReady va FairPlay ni bitta oqimda qo'llab-quvvatlaydigan Common Encryption (CENC) orqali amalga oshiriladi.
  • Ko'p platformalilik DASH ExoPlayer (Android), dash.js (brauzerlar) va libdash orqali ta'minlanadi.

DASH nima?

MPEG-DASH (Dynamic Adaptive Streaming over HTTP) — 2012 yilda nashr etilgan ISO/IEC 23009-1 xalqaro standarti bo'lib, xususiy adaptiv oqim yechimlarining parchalanishiga javob sifatida yaratilgan. HLS (Apple ning xususiy protokoli) va Smooth Streaming (Microsoft) dan farqli o'laroq, DASH boshidanoq ochiq, ma'lum bir sotuvchiga bog'liq bo'lmagan standart sifatida ishlab chiqilgan, bu esa uning sanoatda keng qo'llab-quvvatlanishini ta'minlagan.

DASH ning asosiy innovatsiyasi — oqim tavsifi va media kontentining ajratilishi. Oqim tavsifi MPD (Media Presentation Description) XML faylida saqlanadi va mavjud variantlar haqidagi barcha ma'lumotlarni o'z ichiga oladi: bitratelar, rezolyutsiyalar, kodeklar, subtitrlar, audio yo'llari. Media kontenti alohida segmentlar (odatda fMP4) shaklida saqlanadi va ular HTTP orqali mustaqil ravishda yuklab olinishi mumkin. Bunday arxitektura server infratuzilmasining imkon qadar sodda bo'lishiga imkon beradi — har qanday HTTP server DASH kontentini tarqatishi mumkin.

DASH ning adaptivligi bir xil kontentning variantlarini multiplekslash orqali amalga oshiriladi. Server turli siqish parametrlariga ega bir nechta Representation (tasvirlar) tayyorlaydi. Klient kanalning o'tkazish qobiliyatini tahlil qiladi va tasvirlar o'rtasida dinamik ravishda almashadi, sifat va barqarorlikning optimal nisbatini tanlaydi. Akademik tadqiqotga (IEEE Access, 2024) ko'ra, BOLA algoritmi bilan DASH beqaror ulanishda HLS bilan solishtirganda 22% kamroq bitrate almashinuvini ko'rsatadi.

DASH tarixi va standartlashtirilishi

MPEG DASH ustida ishni 2010 yilda mavjud yechimlarni tahlil qilgandan so'ng boshlagan: Apple HLS, Microsoft Smooth Streaming va Adobe HDS. Standartning birinchi versiyasi (ISO/IEC 23009-1:2012) 2012 yilda chiqarilgan. Ikkinchi versiya (2014) hodisalarni qo'llab-quvvatlash, takomillashtirilgan reklma qo'shish va Server tomonidan boshqariladigan adaptatsiyani qo'shgan. Uchinchi versiya (2019) — HDR, 8K, taktil video qo'llab-quvvatlash va 5G tarmoqlari uchun MMT (MPEG Media Transport) bilan takomillashtirilgan integratsiyani qo'shgan.

2024 yilda MPEG DASH Next Generation ni e'lon qildi, u neyron tarmoq kodeklarini qo'llab-quvvatlash, bulutli renderlash va Extended Reality (XR) stsenariylari uchun optimallashtirishni o'z ichiga oladi. Asosiy yangilik — Neural Network-Based Video Coding (NNVC), u mijoz tomonida dekodlash uchun ML modellaridan foydalanadi va sifatni saqlagan holda bitrateni 30-50% kamaytirishi mumkin.

DASH qanday ishlaydi?

DASH oqimini ijro etish jarayoni to'rt bosqichdan iborat: MPD ni olish, oqim tavsifini tahlil qilish, boshlang'ich tasvirni tanlash va tasvirlar o'rtasida dinamik almashish. Har bir bosqich foydalanuvchi tajribasi sifatiga ta'sir qiluvchi o'ziga xos xususiyatlarga ega.

MPD ni olish va tahlil qilish

Pleyer MPD faylini ma'lum URL manzilidan yuklaydi. MPD butun oqimning tavsifi bilan XML strukturasini o'z ichiga oladi: kontent davomiyligi, vaqt shkalasi, mavjud davrlar (Period), adaptatsiya to'plamlari (AdaptationSet) va kodlashning aniq parametrlari bilan tasvirlar (Representation). Pleyer MPD ni tahlil qiladi va mavjud media resurslarining ichki modelini yaratadi.

Ikki rezolyutsiyali VOD kontenti uchun asosiy MPD fayli namunasi:

xml
<?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>

Segmentlarni yuklash va adaptatsiya

Boshlang'ich tasvirni tanlagandan so'ng, pleyer segmentlarni yuklashni boshlaydi. Har bir segment bir necha soniya kontentni o'z ichiga oladi (odatda 2-10 soniya). Pleyer bir necha segment oldinga buferni ushlab turadi, bu tarmoq tezligidagi qisqa muddatli pasayishlarga qarshi barqarorlikni ta'minlaydi. Tasvirni tanlash algoritmi (ABR) segmentlarning yuklanish tezligini doimiy ravishda kuzatib boradi va mavjud bitratelar o'rtasida almashish to'g'risida qaror qabul qiladi.

DASH uchun zamonaviy ABR algoritmlari, masalan BOLA (Buffer Occupancy based Lyapunov Algorithm) va Pensieve (Reinforcement Learning ga asoslangan), nafaqat joriy o'tkazish qobiliyatini, balki bufer hajmini, kontent turini (sport, yangiliklar, kino) va hatto qurilmaning energiya iste'molini ham hisobga oladi. dash.js va ExoPlayer tarkibiga kiruvchi BOLA, barqaror buferni saqlagan holda bitrate almashinuvlari sonini minimallashtiradi, bu ACM tadqiqotlari (Spiteri et al., 2020) tomonidan tasdiqlangan.

DASH strukturasi: MPD, Period, Adaptation Set

DASH oqimining ierarxik strukturasi to'rt darajada tashkil etilgan: MPD → Period → AdaptationSet → Representation. Har bir daraja tafsilot darajasini qo'shadi va oddiy VOD dan tortib reklma qo'shimchalari va ko'p burchakli video bilan jonli efirgacha murakkab stsenariylarni tavsiflashga imkon beradi.

MPD (Media Presentation Description)

MPD — butun media taqdimotini tavsiflovchi ildiz element. MPD atributlari oqim turini (VOD uchun static, jonli efir uchun dynamic), umumiy davomiylikni, vaqt shkalasini, profilni va DRM haqidagi ma'lumotlarni aniqlaydi. MPD bir yoki bir nechta Period ni o'z ichiga olishi mumkin, ularning har biri kontentning mustaqil vaqt oralig'ini ifodalaydi.

Period, AdaptationSet va Representation

Period — taqdimotning vaqt segmenti. VOD uchun butun kontent uchun bitta Period ishlatiladi. Reklma qo'shimchalari bilan jonli efir uchun Period dinamik ravishda o'zgarishi mumkin — pleyer yangilangan MPD ni yuklaydi va reklma blokiga mos keladigan yangi Period ni aniqlaydi. Har bir Period bir yoki bir nechta AdaptationSet ni o'z ichiga oladi.

AdaptationSet — bir media turining (video, audio, subtitr) o'zaro almashinadigan tasvirlar guruhi. AdaptationSet ichida barcha tasvirlar faqat bitrate va/yoki rezolyutsiya bilan farqlanadi, lekin bir xil kontentni kodlaydi. Muhim xususiyat: pleyer bir AdaptationSet ichidagi tasvirlar o'rtasida segmentlar chegarasida uzilishlarsiz almasha oladi.

Representation — aniq bitrate, rezolyutsiya va kodek bilan kodlashning muayyan varianti. Har bir tasvir uchun MPD da segmentlarni yuklash uchun URL shabloni ko'rsatilgan. DASH moslashuvchan manzillash tizimidan foydalanadi — segment raqami va vaqtini ($Number$, $Time$) almashtirish bilan URL shablonlari orqali, bu serverga har bir segmentni MPD da sanab o'tmasdan fayl nomlarini dinamik yaratishga imkon beradi.

Segmentatsiya va paketlash

Segmentlar ikki turda bo'lishi mumkin: Segment turi (faqat media ma'lumotlari) va Subsegment turi (aniqroq kirish uchun segment qismi). DASH kontentini kodlash uchun FFmpeg yoki paket kodlovchilari kabi vositalar ishlatiladi. Kirish faylidan DASH oqimini yaratish namunasi:

python
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 vs HLS: protokollarni solishtirish

DASH va HLS o'rtasidagi tanlov video oqim tizimini loyihalashda asosiy qarorlardan biridir. Ikkala protokol ham bir xil vazifani (adaptiv HTTP video yetkazish) hal qiladi, lekin arxitektura, kodek qo'llab-quvvatlash va ekotizimda tub farqlarga ega. Keling, ularni asosiy parametrlar bo'yicha ko'rib chiqaylik.

ParametrDASHHLS
StandartXalqaro (ISO/IEC 23009-1)Xususiy (RFC 8216, Apple)
Oqim tavsifiXML (MPD)M3U8 pleylist
KodeklarIstalgan (H.264, HEVC, AV1, VP9)Cheklangan (H.264, HEVC, AV1 2023 dan)
Segment formatifMP4 (asosiy), MPEG-2 TSMPEG-2 TS, fMP4
DRMCENC (barcha DRM uchun yagona)FairPlay, Widevine (alohida)
iOS qo'llab-quvvatlashUchinchi tomon pleyerlari orqaliMahalliy (AVPlayer, Safari)
BrauzerlarChrome, Firefox, Edge (MSE orqali)Safari (mahalliy), qolganlari MSE orqali

DASH ning asosiy afzalligi — kodeklardan mustaqillik. Agar HLS dastlab kodeklarni Apple qo'llab-quvvatlaganlar bilan cheklagan bo'lsa (H.264, HEVC va yaqinda AV1), DASH pleyer tomonidan qo'llab-quvvatlanadigan istalgan kodekdan foydalanishi mumkin: VP9/VP8 (YouTube va Chrome uchun muhim), AV1 (samaradorlik uchun), H.264/HEVC (moslik uchun). Bu DASH ni barcha qurilmalar uchun yagona oqim talab qiladigan ko'p platformali xizmatlar uchun afzal tanlovga aylantiradi.

DASH ning iOS da kamchiligi — Safari va AVPlayer da mahalliy qo'llab-quvvatlashning yo'qligi. iOS ilova ishlab chiqaruvchilari HLS ga mos uchinchi tomon pleyerlaridan yoki VTDecoder orqali integratsiya bilan libdash kabi kutubxonalardan foydalanishlari kerak. Amalda bu iOS ga yo'naltirilgan loyihalar uchun HLS de-fakto standart bo'lib qolishini anglatadi, Android va veb platformalar uchun esa DASH yanada moslashuvchan va kuchli yechimdir.

DASH ni mobil ishlanmada qo'llash

DASH ning integratsiyasi mobil ilovalarda platformaga bog'liq. Android da DASH to'g'ridan-to'g'ri ExoPlayer kengaytma moduli orqali qo'llab-quvvatlanadi. iOS da AVFoundation yoki MPEGDASHPlayer orqali integratsiya bilan libdash kabi uchinchi tomon kutubxonalaridan foydalanish talab qilinadi. Ikkala platforma uchun amaliy tatbiqni ko'rib chiqaylik.

Android da ExoPlayer orqali DASH

Google dan ExoPlayer `exoplayer-dash` moduli orqali DASH ning o'rnatilgan qo'llab-quvvatlashini ta'minlaydi. DASH oqimini ulash boshqa formatlardan farq qilmaydi — MediaItem ga MPD faylining URI ni uzatish kifoya. ExoPlayer avtomatik ravishda kontent formatini aniqlaydi va tegishli rendererni ishga tushiradi, barcha standart ABR algoritmlarini qo'llab-quvvatlaydi.

kotlin
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

Ikkala platformada DRM bilan DASH

Common Encryption (CENC) — DASH ning asosiy imkoniyatlaridan biri bo'lib, turli DRM tizimlari bilan bitta media oqimidan foydalanishga imkon beradi. MPD fayli DRM tizimlarining identifikatorlari (Widevine, PlayReady, FairPlay) bilan ContentProtection XML elementlarini o'z ichiga oladi. Klient o'z platformasiga qarab tegishli DRM tizimini tanlaydi va litsenziya serveri orqali litsenziya so'raydi.

kotlin
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()

Mobil qurilmalar uchun DASH ni optimallashtirish

Mobil ilovalar o'tkazish qobiliyati va energiya iste'molining cheklovlari tufayli DASH ni maxsus sozlashni talab qiladi. Asosiy tavsiyalar: qisqa muddatli tezlik pasayishlariga barqarorlik uchun minimal 2-3 segment buferini o'rnatish, tarmoq o'zgarishlariga tezroq reaksiya uchun 2-4 soniya davomiylikdagi segmentlardan foydalanish va sifat almashinuvi vaqtida keyingi segmentni oldindan yuklash.

Mobil tarmoqlarda trafikni tejash uchun Bitmovin (2024) Content Steering — mijozni optimal CDN tuguniga dinamik yo'naltirishga imkon beruvchi, HLS ning analog funktsiyasiga o'xshash mexanizmdan foydalanishni tavsiya qiladi. DASH Content Steering ISO/IEC 23009-1:2022 spetsifikatsiyasida tasvirlangan va dash.js 4.5+ va ExoPlayer 2.18+ tomonidan qo'llab-quvvatlanadi.

Tez-tez beriladigan savollar

DASH HLS dan qanday farq qiladi?

DASH — sotuvchiga bog'liq bo'lmagan ochiq xalqaro MPEG standarti. HLS (Apple ning xususiy protokoli) dan farqli o'laroq, DASH istalgan kodeklarni qo'llab-quvvatlaydi, M3U8 o'rniga XML oqim tavsifidan (MPD) foydalanadi va CENC orqali yagona DRM tizimini ta'minlaydi. HLS iOS da mahalliy qo'llab-quvvatlashga ega, DASH ko'p platformali yechimlar uchun yanada moslashuvchan.

Qaysi pleyerlar mobil qurilmalarda DASH ni qo'llab-quvvatlaydi?

Android da DASH uchun asosiy pleyer Google ning ExoPlayer i exoplayer-dash moduli bilan. iOS da AVFoundation orqali integratsiya bilan libdash yoki tijorat pleyerlari (THEOplayer, Bitmovin) kabi uchinchi tomon yechimlari ishlatiladi. Veb brauzerlarda DASH dash.js orqali MediaSource Extensions yordamida ijro etiladi.

DASH kontekstida MPD nima?

MPD (Media Presentation Description) — DASH oqimining strukturasini tavsiflovchi XML fayli: kontent davomiyligi, mavjud bitratelar, rezolyutsiyalar, kodeklar, segment formatlari va ularning joylashuvi. MPD pleyer uchun kirish nuqtasi bo'lib xizmat qiladi, HLS dagi master-pleylistni almashtiradi. MPD faylisiz DASH kontentini ijro etish mumkin emas.

DASH jonli efirlarni qo'llab-quvvatlaydimi?

Ha, DASH ham VOD, ham jonli efirni qo'llab-quvvatlaydi. Jonli efir uchun avtomatik yangilanish bilan dynamic MPD turi ishlatiladi. Server davriy ravishda MPD ni yangilab, yangi segmentlarni qo'shadi va eskirganlarini olib tashlaydi. Low-Latency DASH (LL-DASH) chunked encoding bilan 3-8 soniya kechikishga erishishga imkon beradi, bu LL-HLS bilan solishtirish mumkin.

DASH da DRM qanday ishlaydi?

DASH Common Encryption (CENC, ISO/IEC 23001-7) dan foydalanadi, bu media kontentini bir marta shifrlash va istalgan DRM tizimi bilan deshifrlash imkonini beradi. MPD qo'llab-quvvatlanadigan DRM larning (Widevine, PlayReady, FairPlay) ko'rsatkichlari bilan ContentProtection XML elementlarini o'z ichiga oladi. Pleyer platformaga qarab tegishli DRM ni tanlaydi va berilgan URL orqali litsenziya so'raydi.

Xulosa

  • MPEG-DASH — MPD formatidagi XML oqim tavsifi bilan adaptiv HTTP oqimi uchun ochiq xalqaro standart.
  • Kodek mustaqilligi — DASH pleyer uchun mavjud bo'lgan H.264, HEVC, AV1, VP9 va boshqa kodeklarni qo'llab-quvvatlaydi.
  • CENC barcha DRM tizimlari uchun yagona kontent shifrlashni ta'minlaydi, litsenziyalashni soddalashtiradi.
  • ABR algoritmlari (BOLA, Pensieve) bitrate almashinuvlarini minimallashtiradi va barqaror ijroni ta'minlaydi.
  • Android — DASH ExoPlayer da mahalliy qo'llab-quvvatlanadi; iOS uchinchi tomon kutubxonalarini talab qiladi.
  • LL-DASH jonli efir kechikishini 3-8 soniyagacha kamaytiradi.
  • Tavsiya etiladi kodek va DRM moslashuvchanligi muhim bo'lgan ko'p platformali loyihalar uchun DASH dan foydalanish.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing