DASH — bu nədir, protokol və dinamik axının iş prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-05-23 Oxuma vaxtı: 9 dəq

Dynamic Adaptive Streaming over HTTP (DASH) — MPEG (Moving Picture Experts Group) tərəfindən hazırlanmış adaptiv axınlı multimedia ötürülməsi üçün beynəlxalq standartdır. DASH, Media Presentation Description (MPD) formatında XML axın təsvirindən istifadə edərək və məzmunu müxtəlif bitrate-lərə malik seqmentlərə bölərək video və audionun HTTP üzərindən çatdırılmasını təmin edir. Bitmovin Video Developer Report (2025) araşdırmasına görə, video tərtibatçılarının 58%-i DASH-dan istifadə edir və bu onu HLS-dən sonra ikinci ən populyar protokol edir.

Əsas məqamlar

  • DASH — HTTP üzərindən adaptiv axın üçün açıq beynəlxalq MPEG standartıdır.
  • MPD faylı (Media Presentation Description) dövrlərin və adaptasiya dəstlərinin təsviri ilə XML strukturu vasitəsilə axını idarə edir.
  • Kodeklər spesifikasiya ilə məhdudlaşdırılmır — DASH H.264, HEVC, AV1, VP9, AAC və digərlərini dəstəkləyir.
  • DRM vahid axında Widevine, PlayReady və FairPlay-i dəstəkləyən Common Encryption (CENC) vasitəsilə həyata keçirilir.
  • Çarpaz platforma DASH ExoPlayer (Android), dash.js (brauzerlər) və libdash vasitəsilə təmin edilir.

DASH nədir?

MPEG-DASH (Dynamic Adaptive Streaming over HTTP) — 2012-ci ildə nəşr olunmuş ISO/IEC 23009-1 beynəlxalq standartıdır, mülkiyyətli adaptiv axın həllərinin parçalanmasına cavab olaraq yaradılmışdır. HLS (Apple-ın mülkiyyət protokolu) və Smooth Streaming (Microsoft) fərqli olaraq, DASH əvvəldən açıq, konkret satıcıya bağlı olmayan standart kimi hazırlanmışdır ki, bu da sənayedə geniş dəstəyini təmin etmişdir.

DASH-ın əsas yeniliyi — axın təsvirinin və media məzmununun ayrılmasıdır. Axın təsviri MPD (Media Presentation Description) XML faylında saxlanılır və mövcud variantlar haqqında bütün məlumatları ehtiva edir: bitrate-lər, rezolyusiyalar, kodeklər, altyazılar, audio yolları. Media məzmunu ayrı-ayrı seqmentlər (adətən fMP4) şəklində saxlanılır və HTTP vasitəsilə müstəqil yüklənə bilər. Bu arxitektura server infrastrukturunun maksimum dərəcədə sadə olmasına imkan verir — istənilən HTTP server DASH məzmununu paylaya bilər.

DASH-ın adaptivliyi eyni məzmunun variantlarının multipleksləşdirilməsi ilə həyata keçirilir. Server müxtəlif sıxılma parametrləri ilə bir neçə təmsil (Representation) hazırlayır. Kanalın ötürmə qabiliyyətini təhlil edir və keyfiyyət və sabitlik arasında optimal nisbəti seçərək dinamik olaraq təmsillər arasında keçid edir. Akademik tədqiqata (IEEE Access, 2024) görə, BOLA alqoritmi ilə DASH qeyri-sabit əlaqədə HLS ilə müqayisədə 22% daha az bitrate dəyişikliyi göstərir.

DASH-ın tarixi və standartlaşdırılması

MPEG 2010-cu ildə mövcud həlləri təhlil etdikdən sonra DASH üzərində işə başlamışdır: Apple HLS, Microsoft Smooth Streaming və Adobe HDS. Standartın ilk versiyası (ISO/IEC 23009-1:2012) 2012-ci ildə buraxılmışdır. İkinci versiya (2014) hadisələrin dəstəyini, təkmilləşdirilmiş reklam daxiletməni və Server tərəfindən idarə olunan adaptasiyanı əlavə etmişdir. Üçüncü versiya (2019) — HDR, 8K, taktil video dəstəyini və 5G şəbəkələri üçün MMT (MPEG Media Transport) ilə təkmilləşdirilmiş inteqrasiyanı əlavə etmişdir.

2024-cü ildə MPEG DASH Next Generation-ı elan etmişdir ki, bura neyron şəbəkə kodeklərinin dəstəyi, bulud renderinqi və Extended Reality (XR) ssenariləri üçün optimallaşdırma daxildir. Əsas yenilik — Neural Network-Based Video Coding (NNVC), klient tərəfdə dekodlaşdırma üçün ML modellərindən istifadə edir ki, bu da keyfiyyəti qoruyarkən bitrate-i 30-50% azalda bilər.

DASH necə işləyir?

DASH axınının oxudulması prosesi dörd ardıcıl mərhələdən ibarətdir: MPD-nin alınması, axın təsvirinin təhlili, ilkin təmsilin seçilməsi və təmsillər arasında dinamik keçid. Hər mərhələnin istifadəçi təcrübəsinin keyfiyyətinə təsir edən öz xüsusiyyətləri var.

MPD-nin alınması və təhlili

Oynadıcı MPD faylını məlum URL ünvanından yükləyir. MPD bütün axının təsviri ilə XML strukturu ehtiva edir: məzmunun müddəti, vaxt miqyası, mövcud dövrlər (Period), adaptasiya dəstləri (AdaptationSet) və kodlaşdırmanın konkret parametrləri ilə təmsillər (Representation). Oynadıcı MPD-ni təhlil edir və mövcud media resurslarının daxili modelini yaradır.

İki rezolyusiyalı VOD məzmunu üçün əsas MPD faylı nümunəsi:

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>

Seqmentlərin yüklənməsi və adaptasiya

İlkin təmsil seçildikdən sonra oynadıcı seqmentləri yükləməyə başlayır. Hər seqment bir neçə saniyə məzmun ehtiva edir (adətən 2-10 saniyə). Oynadıcı irəlidə bir neçə seqment üçün bufer saxlayır ki, bu da şəbəkə sürətində qısamüddətli enişlərə qarşı dayanıqlığı təmin edir. Təmsil seçimi alqoritmi (ABR) seqmentlərin yüklənmə sürətini daim izləyir və mövcud bitrate-lər arasında keçid haqqında qərar qəbul edir.

DASH üçün müasir ABR alqoritmləri, məsələn BOLA (Buffer Occupancy based Lyapunov Algorithm) və Pensieve (Reinforcement Learning əsaslı), yalnız cari ötürmə qabiliyyətini deyil, həm də bufer ölçüsünü, məzmun növünü (idman, xəbərlər, film) və hətta cihazın enerji istehlakını nəzərə alır. dash.js və ExoPlayer-ə daxil olan BOLA, sabit buferi qoruyarkən bitrate dəyişikliklərinin sayını minimuma endirir, bu ACM tədqiqatları (Spiteri et al., 2020) tərəfindən təsdiqlənmişdir.

DASH strukturu: MPD, Period, Adaptation Set

DASH axınının iyerarxik strukturu dörd səviyyədə təşkil olunub: MPD → Period → AdaptationSet → Representation. Hər səviyyə təfərrüat səviyyəsini artıraraq sadə VOD-dan tutmuş reklam əlavələri və çoxbucaqlı video ilə canlı yayımlara qədər mürəkkəb ssenariləri təsvir etməyə imkan verir.

MPD (Media Presentation Description)

MPD — bütün media təqdimatını təsvir edən kök elementdir. MPD atributları axın növünü (VOD üçün static, canlı yayım üçün dynamic), ümumi müddəti, vaxt miqyasını, profili və DRM haqqında məlumatı müəyyən edir. MPD bir və ya bir neçə Period ehtiva edə bilər, hər biri müstəqil zaman intervalını təmsil edir.

Period, AdaptationSet və Representation

Period — təqdimatın zaman seqmentidir. VOD üçün bütün məzmun üçün bir Period istifadə olunur. Reklam əlavələri ilə canlı yayım üçün Period dinamik olaraq dəyişə bilər — oynadıcı yenilənmiş MPD-ni yükləyir və reklam blokuna uyğun yeni Period aşkarlayır. Hər Period bir və ya bir neçə AdaptationSet ehtiva edir.

AdaptationSet — bir media növünün (video, audio, altyazı) qarşılıqlı əvəzolunan təmsillər qrupudur. AdaptationSet daxilində bütün təmsillər yalnız bitrate və/və ya rezolyusiya ilə fərqlənir, lakin eyni məzmunu kodlayır. Vacib xüsusiyyət: oynadıcı bir AdaptationSet daxilində seqmentlərin sərhəddində təmsillər arasında fasiləsiz keçid edə bilər.

Representation — müəyyən bitrate, rezolyusiya və kodeklə konkret kodlaşdırma variantıdır. Hər təmsil üçün MPD-də seqment yükləmə URL şablonu göstərilir. DASH çevik ünvanlama sistemindən istifadə edir — seqment nömrəsi və vaxtının əvəzlənməsi ilə URL şablonları ($Number$, $Time$) vasitəsilə, bu da serverə hər seqmenti MPD-də sadalamadan fayl adlarını dinamik yaratmağa imkan verir.

Seqmentasiya və paketləmə

Seqmentlər iki növ ola bilər: Segment növü (yalnız media məlumatları) və Subsegment növü (daha dəqiq giriş üçün seqmentin hissəsi). DASH məzmununu kodlaşdırmaq üçün FFmpeg və ya paket kodlayıcıları kimi alətlər istifadə olunur. Giriş faylından DASH axını yaratmaq nümunəsi:

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: protokolların müqayisəsi

DASH və HLS arasında seçim video axını sisteminin layihələndirilməsində əsas qərarlardan biridir. Hər iki protokol eyni vəzifəni (adaptiv HTTP video çatdırılması) həll edir, lakin arxitektura, kodek dəstəyi və ekosistem baxımından əsaslı fərqlərə malikdir. Onları əsas parametrlər üzrə nəzərdən keçirək.

ParametrDASHHLS
StandartBeynəlxalq (ISO/IEC 23009-1)Mülkiyyət (RFC 8216, Apple)
Axın təsviriXML (MPD)M3U8 pleylist
Kodeklərİstənilən (H.264, HEVC, AV1, VP9)Məhdud (H.264, HEVC, AV1 2023-dən)
Seqment formatıfMP4 (əsas), MPEG-2 TSMPEG-2 TS, fMP4
DRMCENC (bütün DRM üçün vahid)FairPlay, Widevine (ayrı)
iOS dəstəyiÜçüncü tərəf oynadıcıları vasitəsiləYerli (AVPlayer, Safari)
BrauzerlərChrome, Firefox, Edge (MSE vasitəsilə)Safari (yerli), qalanları MSE vasitəsilə

DASH-ın əsas üstünlüyü — kodeklərdən asılı olmaması. HLS əvvəlcə kodekləri Apple-ın dəstəklədikləri ilə məhdudlaşdırırdısa (H.264, HEVC və son vaxtlar AV1), DASH oynadıcı tərəfindən dəstəklənən istənilən kodekdən istifadə edə bilər: VP9/VP8 (YouTube və Chrome üçün kritik), AV1 (səmərəlilik üçün), H.264/HEVC (uyğunluq üçün). Bu DASH-ı bütün cihazlar üçün vahid axın tələb edən çarpaz platforma xidmətləri üçün üstünlük təşkil edir.

DASH-ın iOS-da çatışmazlığı — Safari və AVPlayer-də yerli dəstəyin olmaması. iOS tətbiq tərtibatçıları HLS-uyğun üçüncü tərəf oynadıcılarından və ya VTDecoder vasitəsilə inteqrasiya ilə libdash kimi kitabxanalardan istifadə etməlidirlər. Praktikada bu o deməkdir ki, iOS-yönümlü layihələr üçün HLS de-fakto standart olaraq qalır, Android və veb platformalar üçün isə DASH daha çevik və güclü həll yoludur.

DASH-ın mobil tətbiq inkişafında tətbiqi

DASH-ın inteqrasiyası mobil tətbiqlərdə platformadan asılıdır. Android-də DASH birbaşa ExoPlayer genişləndirmə modulu ilə dəstəklənir. iOS-da AVFoundation və ya MPEGDASHPlayer vasitəsilə inteqrasiya ilə libdash kimi üçüncü tərəf kitabxanalarının istifadəsi tələb olunur. Hər iki platforma üçün praktik tətbiqi nəzərdən keçirək.

Android-də ExoPlayer vasitəsilə DASH

Google-dan ExoPlayer `exoplayer-dash` modulu vasitəsilə DASH-ın daxili dəstəyini təmin edir. DASH axınının qoşulması digər formatlardan fərqlənmir — MediaItem-ə MPD faylının URI-ni ötürmək kifayətdir. ExoPlayer avtomatik olaraq məzmun formatını müəyyən edir və müvafiq rendereri işə salır, bütün standart ABR alqoritmlərini dəstəkləyir.

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

Hər iki platformada DRM ilə DASH

Common Encryption (CENC) — DASH-ın əsas imkanlarından biridir, müxtəlif DRM sistemləri ilə bir media axınından istifadə etməyə imkan verir. MPD faylı DRM sistemlərinin identifikatorları (Widevine, PlayReady, FairPlay) ilə ContentProtection XML elementlərini ehtiva edir. Klient öz platformasına əsasən uyğun DRM sistemini seçir və lisenziya serveri vasitəsilə lisenziya tələb edir.

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 cihazlar üçün DASH optimallaşdırması

Mobil tətbiqlər ötürmə qabiliyyəti və enerji istehlakının məhdudiyyətləri səbəbindən DASH-ın xüsusi tənzimlənməsini tələb edir. Əsas tövsiyələrə daxildir: qısamüddətli sürət enişlərinə qarşı dayanıqlıq üçün minimum 2-3 seqment buferinin qurulması, şəbəkə dəyişikliklərinə daha sürətli reaksiya üçün 2-4 saniyə müddətli seqmentlərin istifadəsi və keyfiyyət dəyişikliyi zamanı növbəti seqmentin əvvəlcədən yüklənməsi.

Mobil şəbəkələrdə trafikə qənaət üçün Bitmovin (2024) Content Steering — HLS-in analoji funksiyasına bənzər, klienti optimal CDN qovşağına dinamik yönləndirməyə imkan verən mexanizmdən istifadə etməyi tövsiyə edir. DASH Content Steering ISO/IEC 23009-1:2022 spesifikasiyasında təsvir olunub və dash.js 4.5+ və ExoPlayer 2.18+ tərəfindən dəstəklənir.

Tez-tez verilən suallar

DASH HLS-dən nə ilə fərqlənir?

DASH — satıcıya bağlı olmayan açıq beynəlxalq MPEG standartıdır. HLS-dən (Apple-ın mülkiyyət protokolu) fərqli olaraq, DASH istənilən kodekləri dəstəkləyir, M3U8 əvəzinə XML axın təsvirindən (MPD) istifadə edir və CENC vasitəsilə vahid DRM sistemi təmin edir. HLS iOS-da yerli dəstəyə malikdir, DASH çarpaz platforma həlləri üçün daha çevikdir.

Hansı oynadıcılar mobil cihazlarda DASH-ı dəstəkləyir?

Android-də DASH üçün əsas oynadıcı Google-un ExoPlayer-idir exoplayer-dash modulu ilə. iOS-da AVFoundation vasitəsilə inteqrasiya ilə libdash və ya kommersiya oynadıcıları (THEOplayer, Bitmovin) kimi üçüncü tərəf həlləri istifadə olunur. Veb brauzerlərdə DASH dash.js vasitəsilə MediaSource Extensions istifadə edərək oxudulur.

DASH kontekstində MPD nədir?

MPD (Media Presentation Description) — DASH axınının strukturunu təsvir edən XML faylıdır: məzmun müddəti, mövcud bitrate-lər, rezolyusiyalar, kodeklər, seqment formatları və onların yerləşməsi. MPD oynadıcı üçün giriş nöqtəsi kimi xidmət edir, HLS-də master-pleylisti əvəz edir. MPD faylı olmadan DASH məzmununun oxudulması mümkün deyil.

DASH canlı yayımları dəstəkləyirmi?

Bəli, DASH həm VOD, həm də canlı yayımı dəstəkləyir. Canlı yayım üçün avtomatik yeniləmə ilə dynamic MPD növü istifadə olunur. Server dövri olaraq MPD-ni yeniləyir, yeni seqmentlər əlavə edir və köhnələri silir. Low-Latency DASH (LL-DASH) chunked encoding ilə 3-8 saniyə gecikməyə nail olmağa imkan verir ki, bu da LL-HLS ilə müqayisə olunandır.

DASH-da DRM necə işləyir?

DASH Common Encryption (CENC, ISO/IEC 23001-7) istifadə edir ki, bu da media məzmununu bir dəfə şifrələməyə və istənilən DRM sistemi ilə deşifrə etməyə imkan verir. MPD dəstəklənən DRM-lərin (Widevine, PlayReady, FairPlay) göstəriciləri ilə ContentProtection XML elementlərini ehtiva edir. Oynadıcı platforma əsasında uyğun DRM seçir və verilmiş URL ünvanı vasitəsilə lisenziya tələb edir.

Nəticə

  • MPEG-DASH — MPD formatında XML axın təsviri ilə adaptiv HTTP axını üçün açıq beynəlxalq standart.
  • Kodek müstəqilliyi — DASH oynadıcı üçün mövcud olan H.264, HEVC, AV1, VP9 və digər kodekləri dəstəkləyir.
  • CENC bütün DRM sistemləri üçün vahid məzmun şifrələməsi təmin edir, lisenziyalaşdırmanı sadələşdirir.
  • ABR alqoritmləri (BOLA, Pensieve) bitrate dəyişikliklərini minimuma endirir və sabit oxudulmanı təmin edir.
  • Android — DASH ExoPlayer-də yerli dəstəklənir; iOS üçüncü tərəf kitabxanaları tələb edir.
  • LL-DASH canlı yayım gecikməsini 3-8 saniyəyə qədər azaldır.
  • Tövsiyə olunur kodek və DRM çevikliyinin vacib olduğu çarpaz platforma layihələri üçün DASH-dan istifadə.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun