HLS: bu nədir, protokol və iş prinsipi

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

HTTP Live Streaming (HLS) — Apple şirkəti tərəfindən hazırlanmış adaptiv media axını protokoludur. HLS video və audionu HTTP bağlantıları vasitəsilə çatdırır, məzmunu kiçik fayl-seqmentlər ardıcıllığına bölür və M3U8 formatında mətn pleylistləri vasitəsilə oxutmanı idarə edir. Sandvine Internet Phenomena Report (2025) məlumatına görə, HLS dünya adaptiv video striminq trafikinin 65%-dən çoxunu emal edir. Protokol bütün Apple platformalarında dəstəklənir və üçüncü tərəf kitabxanaları vasitəsilə Android, Windows və Smart TV-də mövcuddur.

Əsas məqamlar

  • HLS — Apple-dan HTTP əsaslı adaptiv striminq protokolu, axını idarə etmək üçün M3U8 pleylistlərindən istifadə edir.
  • Adaptivlik HLS istifadəçinin internet sürətindən asılı olaraq bitrate-lər arasında avtomatik keçid etməyə imkan verir.
  • Pleylistlər master.m3u8 və seqment .ts və ya .m4s faylları HLS axınının əsas arxitekturasını təşkil edir.
  • Məzmun mühafizəsi AES-128 şifrələməsi və DRM sistemləri (FairPlay Streaming, Widevine) vasitəsilə həyata keçirilir.
  • Gecikmə HLS 2020-ci ildə təqdim edilmiş Low-Latency HLS (LL-HLS) sayəsində 2-6 saniyəyə endirilmişdir.

HLS nədir?

HTTP Live Streaming (HLS) — Apple tərəfindən 2009-cu ildə hazırlanmış və ilk dəfə iOS 3.0 və Safari-də təqdim edilmiş media axını protokoludur. 2017-ci ildə protokol RFC 8216 vasitəsilə internet standartı kimi təklif edilmişdir ki, bu da onun istənilən platformada tətbiq oluna bilən açıq spesifikasiya statusunu təsdiqləmişdir.

HLS-nin əsas ideyası fasiləsiz media axınını bölmək — 2-10 saniyə müddətində qısa seqmentlərə ayırmaqdır. Hər bir seqment adi HTTP sorğusu vasitəsilə yüklənə bilən müstəqil fayldır. Axının idarə edilməsi M3U8 formatında mətn pleylistləri vasitəsilə həyata keçirilir ki, bunlar da seqmentlərə keçidlər və onların düzgün oxudulması üçün metadata ehtiva edir.

Adaptivlik — HLS-nin əsas üstünlüyüdür. Server eyni məzmunun müxtəlif bitrate-li bir neçə versiyasını hazırlayır — zəif bağlantılar üçün 200 Kbps-dən 4K video üçün 20+ Mbps-dək. Müştəri kanalın cari ötürmə qabiliyyətinə əsasən uyğun bitrate-i avtomatik seçir. Apple-ın tədqiqatına görə (WWDC 2024), LL-HLS bitrate-lər arasında keçid vaxtını 500 millisaniyəyə qədər azaldır, nəzərə çarpan fasilələr olmadan keyfiyyətin hamar dəyişməsini təmin edir.

HLS-nin inkişaf tarixi

İlk versiya HLS (2009) yalnız AAC audio kodeki və H.264 video kodeki ilə MPEG-2 TS seqmentlərini dəstəkləyirdi. iOS 8-də (2014) fMP4 (fragmented MP4) seqmentləri üçün dəstək əlavə edildi ki, bu da HLS-dən HEVC (H.265) daxil olmaqla daha müasir kodeklərlə istifadə etməyə imkan verdi. iOS 11 (2017) HDR10 və Dolby Vision dəstəyini təqdim etdi. iOS 13 (2019) Low-Latency HLS-i təqdim edərək gecikməni ənənəvi 6-30 saniyədən 2-6 saniyəyə endirdi.

2023-cü ildə Apple HLS-ni AV1 və EVC (Essential Video Coding) kodekləri üçün dəstəklə genişləndirdi, həmçinin Content Steering — müştərilərin optimal yükləmə üçün CDN serverləri arasında dinamik yönləndirilməsi mexanizmini tətbiq etdi. Content Steering serverə seqmentlərin URL-lərini ani olaraq dəyişməyə, oxutmanı kəsmədən müştərini ən yaxın və ya ən az yüklənmiş CDN node-na yönləndirməyə imkan verir.

HLS necə işləyir?

HLS arxitekturası üç əsas komponentdən ibarətdir: server hissəsi (origin-server + kodlayıcı), paylama şəbəkəsi (CDN) və müştəri hissəsi (HLS dəstəyi olan pleyer). Bütün proses — videonun tutulmasından istifadəçi cihazında oxudulmasına qədər — hər biri striminq keyfiyyəti üçün kritik olan bir neçə ardıcıl mərhələni əhatə edir.

Kodlaşdırma və seqmentasiya

Mənbə video əvvəlcə müxtəlif bitrate və rezolyusiyalarda bir neçə varianta kodlaşdırılır. FFmpeg və ya AWS Elemental MediaConvert kimi peşəkar kodlayıcılar eyni vaxtda 4-12 axın variantı yaradır: 240p (400 Kbps)-dən 4K (40 Mbps)-dək. Hər bir variant eyni müddətli seqmentlərə kəsilir, adətən LL-HLS üçün 2-6 saniyə və ya ənənəvi HLS üçün 6-10 saniyə.

Hər bir variant üçün bütün seqmentlərin URL-lərini və onların müddətini ehtiva edən media pleylisti (variant playlist) yaradılır. Əlavə olaraq bütün variantları birləşdirən və hər biri haqqında məlumatı (rezolyusiya, bitrate, kodek və audio trekləri) ehtiva edən master pleylist (master playlist) yaradılır. Müştəri əvvəlcə master pleylisti yükləyir, sonra isə bağlantı sürətinin təhlili əsasında uyğun variantı seçir.

CDN vasitəsilə çatdırılma

Seqmentlər və pleylistlər istifadəçilərə coğrafi cəhətdən yaxın yerləşən CDN serverlərində keşlənir. Çatdırılma üçün standart HTTP protokolunun istifadəsi HLS-yə kritik üstünlük verir: HTTP-i dəstəkləyən istənilən CDN, yük balanslaşdırıcısı və ya proksi server əlavə konfiqurasiya olmadan HLS ilə işləyir. Bu, HLS-ni xüsusi serverlər tələb edən RTMP və ya WebRTC kimi real vaxt protokollarından fərqləndirir.

python
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"
])

Müştəri tərəfi bitrate seçimi alqoritmindən (ABR — Adaptive Bitrate) istifadə edir. HLS pleyeri master pleylisti yükləyir, mövcud variantları təhlil edir və oxutmanı ən uyğun bitrate-dən başlayır. Oxutma zamanı pleyer seqmentlərin yükləmə sürətini və buferin doldurulmasını daim izləyir, daha yüksək və ya aşağı bitrate-ə keçid barədə qərar qəbul edir. Müasir ABR alqoritmləri təkcə şəbəkə sürətini deyil, həm də bufer ölçüsünü, məzmun növünü və hətta cihazın enerji istehlakını nəzərə alır.

HLS axınının strukturu: pleylistlər və seqmentlər

HLS axınının strukturunu başa düşmək kodlaşdırmanın, paylamanın düzgün konfiqurasiyası və oxutma problemlərinin aradan qaldırılması üçün zəruridir. Hər bir HLS axını iki səviyyəli pleylistlərdən və ciddi iyerarxiyada təşkil edilmiş çoxsaylı media seqmentlərindən ibarətdir.

Master Playlist (master pleylist)

Master playlist — HLS pleyeri üçün giriş nöqtəsidir. .m3u8 genişlənməli fayl bütün axın variantlarına (variant streams) keçidləri və onların xarakteristikalarını ehtiva edir. Pleyer bu faylı ilk olaraq yükləyir və bitrate və rezolyusiyalar haqqında məlumat əsasında variant seçimi barədə ilkin qərar qəbul edir. Master pleylist həmçinin alternativ audio treklərinə, altyazılara və sürətli irəli çəkmə üçün I-Frame pleylistlərə keçidlər ehtiva edə bilər.

m3u8
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080
1080p/video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360
360p/video.m3u8

Media Playlist (media pleylist)

Media playlist bir axın variantı üçün birbaşa seqmentlər siyahısını ehtiva edir. Hər bir seqment müddəti və URI ilə göstərilir. Media pleylist statik (VOD üçün — bütün seqmentlərin tam siyahısı) və ya dinamik yenilənən (canlı yayımlar üçün — köhnə seqmentlər silinir, yeniləri əlavə olunur) ola bilər.

m3u8
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXTINF:6.000,
segment001.ts
#EXTINF:6.000,
segment002.ts
#EXT-X-ENDLIST

Seqment formatları

HLS iki əsas media seqment formatını dəstəkləyir: MPEG-2 Transport Stream (.ts) və Fragmented MP4 (.m4s və ya .mp4). MPEG-2 TS — maksimum uyğunluğu təmin edən orijinal HLS formatıdır. fMP4 — HDR, HEVC və daha səmərəli sıxılmanı dəstəkləyən daha müasir formatdır. Apple iOS 10 və macOS Sierra-dan başlayaraq bütün yeni layihələr üçün fMP4-ü tövsiyə edir.

HLS axınının əlavə elementlərinə sürətli irəli çəkmə üçün I-Frame pleylistlər, altyazıların və reklam markerlərinin sinxronizasiyası üçün ID3 metadatası, həmçinin analitik serverə baxış məlumatlarının ötürülməsi üçün Session Data daxildir. Bütün bu elementlər isteğe bağlıdır, lakin onların istifadəsi istifadəçi təcrübəsinin keyfiyyətini artırır.

HLS-nin üstünlükləri və çatışmazlıqları

HLS bir sıra arxitektura üstünlükləri sayəsində video striminq bazarında üstünlük təşkil edir, lakin konkret layihə üçün protokol seçərkən nəzərə alınmalı olan məhdudiyyətlərə də malikdir. HLS-ni alternativ video çatdırılma protokolları ilə müqayisə edək.

XarakteristikaHLSDASHRTMP
NəqliyyatHTTP (80/443)HTTP (80/443)TCP (1935)
AdaptivlikBəli (ABR)Bəli (ABR)Xeyr
Aşağı gecikmə2-6 san (LL-HLS)3-8 san (LL-DASH)0.5-2 san
HDR dəstəyiBəli (iOS 11+)BəliMəhdud
Yerli iOSBəli (Safari, AVPlayer)Üçüncü tərəf pleyerlər vasitəsiləXeyr
CDN asanlığıMaksimal (HTTP)Maksimal (HTTP)İxtisaslaşmış serverlər

HLS-nin əsas üstünlüyü — daxili AVPlayer vasitəsilə bütün Apple cihazlarında (iPhone, iPad, Apple TV, Mac) yerli dəstəkdir. Bu, HLS-ni iOS/macOS tətbiqləri üçün de-fakto standartına çevirir. Bundan əlavə, çatdırılma üçün standart HTTP-dən istifadə məzmunu əlavə konfiqurasiya olmadan istənilən CDN və proksi serverlərdə keşləməyə imkan verir ki, bu da çatdırılma infrastrukturunu əhəmiyyətli dərəcədə sadələşdirir.

HLS-nin çatışmazlıqlarına canlı yayımlar üçün RTMP və ya WebRTC ilə müqayisədə daha yüksək gecikmə daxildir. Hətta LL-HLS ilə minimal gecikmə 2-6 saniyə təşkil edir ki, bu da real vaxt interaktiv ssenariləri üçün qəbuledilməzdir. Həmçinin HLS serverdə daha çox fayl yaradır (hər seqment ayrıca fayldır), bu da çox sayda paralel yayım zamanı fayl sisteminə yük yarada bilər.

Mobil tətbiqlərdə HLS

HLS-in mobil tətbiqlərə inteqrasiyası platformadan asılı olaraq fərqlənir. iOS və macOS-da HLS əməliyyat sistemi səviyyəsində AVFoundation və AVPlayer vasitəsilə dəstəklənir ki, bu da aparat sürətləndirilməsi və minimal enerji sərfiyyatını təmin edir. Android-də HLS daxili MediaPlayer tərəfindən dəstəklənmir, lakin Google-ın rəsmi media pleyeri olan ExoPlayer vasitəsilə mövcuddur.

iOS-da AVPlayer vasitəsilə HLS

Apple platformasında HLS oxutması AVPlayer-də daxili dəstək sayəsində maksimum dərəcədə sadədir. Master pleylistin URL-i ilə AVPlayer yaratmaq kifayətdir və sistem avtomatik olaraq adaptiv bitrate keçidini, audio treklərin seçilməsini və altyazıların işlənməsini idarə edəcək. Bununla yanaşı, developer AVPlayerItem və AVAssetResourceLoader vasitəsilə oxutma üzərində tam nəzarət əldə edir.

swift
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-də ExoPlayer vasitəsilə HLS

Android üçün ayrıca genişlənmə modulu vasitəsilə HLS-ni dəstəkləyən ExoPlayer istifadə olunur. ExoPlayer HLS axını üzərində daha incə nəzarət təmin edir: bitrate seçimini idarə etmək, buferi konfiqurasiya etmək və seqment yükləmə xətalarını fərdi şəkildə emal etmək mümkündür. LL-HLS üçün ExoPlayer 2.14.0 və daha yüksək versiyası tələb olunur.

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

Mobil şəbəkələr üçün HLS optimallaşdırılması

Mobil tətbiqlər hüceyrə şəbəkələrinin qeyri-sabitliyi və trafik məhdudiyyətləri səbəbindən HLS konfiqurasiyasına xüsusi yanaşma tələb edir. Əsas tövsiyələrə daxildir: şəbəkə növünə (Wi-Fi və ya hüceyrə) əsasən ilkin bitrate-in təyin edilməsi, daha sürətli adaptasiya üçün qısaldılmış seqment müddətindən (2-4 saniyə) istifadə, Wi-Fi-a keçid zamanı buferin ilkin yüklənməsi və zəif siqnal zamanı audio trekin prioritetləşdirilməsi.

Apple HLS Authoring Specification for Apple Devices (2024) sənədində mobil cihazlar üçün seqment ölçüsünün 6 saniyədən çox olmamasını və minimum 4 bitrate variantını tövsiyə edir. Mobil şəbəkələrdə trafikə qənaət etmək üçün server seqmentləri Cache-Control HTTP başlığı ilə təqdim etməlidir ki, bu da məzmunun operatorların aralıq proksi serverlərində keşlənməsinə imkan verir.

Tez-tez verilən suallar

HLS adi MP4 videodan nə ilə fərqlənir?

MP4 — bütöv video faylı saxlamaq üçün konteynerdir və oxutma başlamazdan əvvəl tam yüklənməlidir. HLS videonu kiçik seqmentlərə bölür və ilk seqmentin yüklənməsindən 2-6 saniyə sonra izləməyə başlamağa imkan verir, keyfiyyəti avtomatik olaraq internet sürətinə uyğunlaşdırır.

HLS-dən Apple serveri olmadan istifadə etmək olar?

Bəli, HLS Apple server proqram təminatı tələb etmir. İstənilən HTTP server (Nginx, Apache, CDN) HLS məzmununu paylaya bilər. Videonun HLS-ə kodlaşdırılması üçün FFmpeg və ya peşəkar kodlayıcılardan istifadə olunur. Yeganə tələb .m3u8 faylları üçün MIME tipinin düzgün konfiqurasiyasıdır.

HLS canlı yayımları dəstəkləyir?

Bəli, HLS əvvəlcə canlı yayım üçün hazırlanmışdır. Canlı yayım zamanı media pleylist dinamik olaraq yenilənir: server yeni seqmentlər əlavə edir və köhnələrini silir. Low-Latency HLS (LL-HLS) gecikməni 2-6 saniyəyə qədər azaldır ki, bu da HLS-ni idman yayımları və xəbər efirləri üçün uyğun edir.

HLS-də master pleylist nə üçün lazımdır?

Master playlist eyni məzmunun müxtəlif bitrate və rezolyusiyalı bütün variantlarını birləşdirir. Pleyer onu ilk olaraq yükləyir, hər bir variantın xarakteristikalarını (bitrate, rezolyusiya, kodek) təhlil edir və cari şəbəkə şəraiti üçün optimal olanı seçir. Master pleylist olmadan adaptiv keyfiyyət keçidi mümkün deyil.

HLS məzmununu yükləmədən necə qorumaq olar?

HLS seqmentlərin AES-128 şifrələməsini və DRM sistemləri ilə inteqrasiyanı dəstəkləyir: FairPlay Streaming (Apple), Widevine (Google) və PlayReady (Microsoft). Şifrələmə açarları ayrıca qorunan kanal vasitəsilə ötürülür. Əlavə qoruma üçün pleylistlərə giriş üçün token autentifikasiyası istifadə olunur.

Nəticə

  • HLS — Apple-dan HTTP əsaslı adaptiv striminq protokolu, M3U8 pleylistlərindən və media seqmentlərindən istifadə edir.
  • Adaptivlik çoxsaylı bitrate variantları (ABR) vasitəsilə istənilən şəbəkə şəraitində hamar oxutmanı təmin edir.
  • LL-HLS canlı yayım gecikməsini 2-6 saniyəyə endirərək RTMP göstəricilərinə yaxınlaşır.
  • iOS-da HLS daxili AVPlayer ilə aparat sürətləndirilməsi ilə oxudulur; Android-də — ExoPlayer vasitəsilə.
  • Seqment formatları: uyğunluq üçün MPEG-2 TS (.ts) və HDR/HEVC üçün fMP4 (.m4s).
  • Məzmun mühafizəsi AES-128 şifrələməsi və DRM (FairPlay, Widevine) vasitəsilə həyata keçirilir.
  • Tövsiyə olunur streaminq ilə iOS/macOS layihələri üçün HLS-dən istifadə və Android-də ExoPlayer vasitəsilə kross-platforma həlləri üçün.

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