HLS: mi ez, a protokoll és működési elve

Szerző: IT Sectr Megjelenés: 2026-05-23 Olvasási idő: 9 perc

HTTP Live Streaming (HLS) — egy adaptív médiaadat-streamelési protokoll, amelyet az Apple fejlesztett ki. A HLS HTTP-kapcsolatokon keresztül szállítja a videót és a hangot, a tartalmat kis fájl-szegmensek sorozatára bontva, és a lejátszást M3U8 formátumú szöveges lejátszási listákon keresztül vezérli. A Sandvine Internet Phenomena Report (2025) szerint a HLS a globális adaptív videostreamelési forgalom több mint 65%-át dolgozza fel. A protokoll minden Apple platformon támogatott, és harmadik féltől származó könyvtárakon keresztül Androidon, Windows-on és Smart TV-n is elérhető.

Főbb pontok

  • HLS — az Apple adaptív streamelési protokollja, amely HTTP-n alapul és M3U8 lejátszási listákat használ a folyam vezérléséhez.
  • Adaptivitás A HLS lehetővé teszi az automatikus váltást a bitráták között a felhasználó internetsebességétől függően.
  • Lejátszási listák A master.m3u8 és a .ts vagy .m4s szegmensfájlok alkotják a HLS folyam alapvető architektúráját.
  • Tartalomvédelem AES-128 titkosítással és DRM rendszerek (FairPlay Streaming, Widevine) támogatásával valósul meg.
  • Késleltetés A HLS késleltetése 2-6 másodpercre csökkent a 2020-ban bevezetett Low-Latency HLS (LL-HLS) segítségével.

Mi az HLS?

HTTP Live Streaming (HLS) — egy média streamelési protokoll, amelyet az Apple fejlesztett ki 2009-ben, és először az iOS 3.0-ban és a Safari-ban mutatták be. 2017-ben a protokollt internetes szabványként javasolták az RFC 8216-on keresztül, ami megerősítette nyílt specifikációkénti státuszát, amely bármely platformon implementálható.

A HLS alapötlete a folyamatos médiafolyam felosztása rövid, 2-10 másodperces szegmensekre. Minden szegmens egy önálló fájl, amely egy szokásos HTTP-kéréssel tölthető le. A folyam vezérlése M3U8 formátumú szöveges lejátszási listákon keresztül történik, amelyek linkeket tartalmaznak a szegmensekhez és metaadatokat a helyes lejátszáshoz.

Adaptivitás — a HLS kulcsfontosságú előnye. A szerver több verziót készít ugyanabból a tartalomból különböző bitrátákkal — 200 Kbps-tól gyenge kapcsolatokhoz egészen 20+ Mbps-ig 4K videóhoz. Az ügyfél automatikusan kiválasztja a megfelelő bitrátát a csatorna aktuális sávszélessége alapján. Az Apple kutatása szerint (WWDC 2024) az LL-HLS 500 ezredmásodpercre csökkenti a bitráták közötti váltási időt, biztosítva a minőség zökkenőmentes változását észrevehető szünetek nélkül.

A HLS fejlesztésének története

Az első verzió HLS (2009) csak MPEG-2 TS szegmenseket támogatott AAC hangkodekkel és H.264 videókodekkel. Az iOS 8-ban (2014) hozzáadták az fMP4 (fragmented MP4) szegmensek támogatását, ami lehetővé tette a HLS használatát modernebb kodekekkel, beleértve a HEVC-t (H.265). Az iOS 11 (2017) bevezette a HDR10 és Dolby Vision támogatását. Az iOS 13 (2019) bevezette a Low-Latency HLS-t, csökkentve a késleltetést a hagyományos 6-30 másodpercről 2-6 másodpercre.

2023-ban az Apple kibővítette a HLS-t az AV1 és EVC (Essential Video Coding) kodekek támogatásával, valamint bevezette a Content Steeringet — egy mechanizmust az ügyfelek dinamikus átirányítására a CDN-szerverek között az optimális betöltés érdekében. A Content Steering lehetővé teszi a szerver számára, hogy menet közben megváltoztassa a szegmensek URL-jeit, átirányítva az ügyfelet a legközelebbi vagy legkevésbé terhelt CDN-csomópontra a lejátszás megszakítása nélkül.

Hogyan működik a HLS?

A HLS architektúrája három fő komponensből áll: szerveroldal (origin-szerver + kódoló), elosztó hálózat (CDN) és ügyféloldal (HLS-t támogató lejátszó). A teljes folyamat — a videó rögzítésétől a felhasználó eszközén történő lejátszásig — több egymást követő szakaszt foglal magában, amelyek mindegyike kritikus a streamelés minősége szempontjából.

Kódolás és szegmentálás

A forrásvideót először kódolják több változatba különböző bitrátákkal és felbontásokkal. A professzionális kódolók, mint az FFmpeg vagy az AWS Elemental MediaConvert, egyszerre 4-12 folyamváltozatot hoznak létre: 240p-től (400 Kbps) 4K-ig (40 Mbps). Minden változatot azonos hosszúságú szegmensekre vágnak, általában 2-6 másodpercre LL-HLS esetén vagy 6-10 másodpercre hagyományos HLS esetén.

Minden változathoz létrehoznak egy média lejátszási listát (variant playlist), amely tartalmazza az összes szegmens URL-jét és azok időtartamát. Emellett létrehoznak egy master lejátszási listát (master playlist), amely egyesíti az összes változatot, és információkat tartalmaz mindegyikről: felbontás, bitráta, kodek és hangsávok. Az ügyfél először a master lejátszási listát tölti le, majd a kapcsolat sebességének elemzése alapján kiválasztja a megfelelő változatot.

Szállítás CDN-en keresztül

A szegmensek és lejátszási listák a felhasználókhoz földrajzilag közel elhelyezkedő CDN-szervereken vannak gyorsítótárazva. A szabványos HTTP protokoll használata a szállításhoz kritikus előnyt biztosít a HLS-nek: bármely CDN, terheléselosztó vagy proxy szerver, amely támogatja a HTTP-t, további konfiguráció nélkül működik a HLS-sel. Ez különbözteti meg a HLS-t a valós idejű protokolloktól, mint az RTMP vagy a WebRTC, amelyek speciális szervereket igényelnek.

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

Az ügyféloldal bitráta kiválasztási algoritmust (ABR — Adaptive Bitrate) használ. A HLS-lejátszó letölti a master lejátszási listát, elemzi a rendelkezésre álló változatokat, és a legmegfelelőbb bitrátával kezdi a lejátszást. A lejátszás során a lejátszó folyamatosan figyeli a szegmensek letöltési sebességét és a puffer feltöltődését, döntést hozva a magasabb vagy alacsonyabb bitrátára váltásról. A modern ABR algoritmusok nemcsak a hálózati sebességet veszik figyelembe, hanem a puffer méretét, a tartalom típusát és akár az eszköz energiafogyasztását is.

A HLS folyam szerkezete: lejátszási listák és szegmensek

A HLS folyam szerkezetének megértése szükséges a kódolás, az elosztás helyes konfigurálásához és a lejátszási problémák hibaelhárításához. Minden HLS folyam két szintű lejátszási listából és számos média szegmensből áll, amelyek szigorú hierarchiába vannak szervezve.

Master Playlist (master lejátszási lista)

Master playlist — a belépési pont a HLS-lejátszó számára. A .m3u8 kiterjesztésű fájl linkeket tartalmaz az összes folyamváltozathoz (variant streams) és azok jellemzőihez. A lejátszó ezt a fájlt tölti le elsőként, és a bitrátákról és felbontásokról szóló információk alapján kezdeti döntést hoz a változat kiválasztásáról. A master lejátszási lista linkeket tartalmazhat alternatív hangsávokhoz, feliratokhoz és I-Frame lejátszási listákhoz a gyors visszatekeréshez.

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 (média lejátszási lista)

Media playlist közvetlenül tartalmazza a szegmensek listáját egy folyamváltozathoz. Minden szegmens időtartammal és URI-val van megadva. A média lejátszási lista lehet statikus (VOD esetén — az összes szegmens teljes listája) vagy dinamikusan frissülő (élő közvetítések esetén — a régi szegmensek törlődnek, újak kerülnek hozzáadásra).

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

Szegmensformátumok

A HLS két fő média szegmensformátumot támogat: MPEG-2 Transport Stream (.ts) és Fragmented MP4 (.m4s vagy .mp4). MPEG-2 TS — az eredeti HLS formátum, amely maximális kompatibilitást biztosít. fMP4 — egy modernebb formátum, amely támogatja a HDR-t, a HEVC-t és a hatékonyabb tömörítést. Az Apple az fMP4-et ajánlja minden új projekthez az iOS 10 és macOS Sierra óta.

A HLS folyam további elemei közé tartoznak az I-Frame lejátszási listák a gyors visszatekeréshez, az ID3 metaadatok a feliratok és reklámjelzők szinkronizálásához, valamint a Session Data a megtekintési információk analitikai szerverre történő továbbításához. Mindezek az elemek opcionálisak, de használatuk javítja a felhasználói élmény minőségét.

A HLS előnyei és hátrányai

A HLS számos architekturális előnyének köszönhetően dominál a videostreamelési piacon, de vannak korlátai is, amelyeket figyelembe kell venni a protokoll kiválasztásakor egy adott projekthez. Hasonlítsuk össze a HLS-t alternatív videószállítási protokollokkal.

JellemzőHLSDASHRTMP
SzállításHTTP (80/443)HTTP (80/443)TCP (1935)
AdaptivitásIgen (ABR)Igen (ABR)Nem
Alacsony késleltetés2-6 mp (LL-HLS)3-8 mp (LL-DASH)0.5-2 mp
HDR támogatásIgen (iOS 11+)IgenKorlátozott
Natív iOSIgen (Safari, AVPlayer)Harmadik féltől származó lejátszókon keresztülNem
CDN egyszerűségMaximális (HTTP)Maximális (HTTP)Speciális szerverek

A HLS fő előnye — natív támogatás az összes Apple eszközön (iPhone, iPad, Apple TV, Mac) a beépített AVPlayeren keresztül. Ez teszi a HLS-t de facto szabvánnyá az iOS/macOS alkalmazások számára. Emellett a szabványos HTTP használata a szállításhoz lehetővé teszi a tartalom gyorsítótárazását bármely CDN-en és proxy szerveren további konfiguráció nélkül, ami jelentősen leegyszerűsíti a szállítási infrastruktúrát.

A HLS hátrányai közé tartozik a magasabb késleltetés az RTMP-hez vagy WebRTC-hez képest élő közvetítések esetén. Még LL-HLS-sel is a minimális késleltetés 2-6 másodperc, ami elfogadhatatlan interaktív valós idejű forgatókönyvek esetén. Továbbá a HLS több fájlt generál a szerveren (minden szegmens egy külön fájl), ami nagy számú egyidejű közvetítés esetén terhelheti a fájlrendszert.

HLS mobilalkalmazásokban

A HLS integrációja a mobilalkalmazásokban platformonként eltérő. iOS-en és macOS-en a HLS operációs rendszer szintjén támogatott az AVFoundation és AVPlayer segítségével, ami hardveres dekódolási gyorsítást és minimális energiafogyasztást biztosít. Androidon a HLS-t a beépített MediaPlayer nem támogatja, de elérhető az ExoPlayeren — a Google hivatalos média lejátszóján — keresztül.

HLS iOS-en AVPlayeren keresztül

Az Apple platformon a HLS lejátszása rendkívül egyszerű a AVPlayer beépített támogatásának köszönhetően. Elég létrehozni egy AVPlayert a master lejátszási lista URL-jével, és a rendszer automatikusan kezeli az adaptív bitráta váltást, a hangsávok kiválasztását és a feliratok feldolgozását. A fejlesztő eközben teljes hozzáféréssel rendelkezik a lejátszás vezérléséhez az AVPlayerItem és AVAssetResourceLoader segítségével.

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

HLS Androidon ExoPlayeren keresztül

Android esetén az ExoPlayer használatos, amely egy külön bővítőmodulon keresztül támogatja a HLS-t. Az ExoPlayer finomabb vezérlést biztosít a HLS folyam felett: a bitráta kiválasztása menedzselhető, a pufferelés konfigurálható, és a szegmensbetöltési hibák egyénileg feldolgozhatók. Az LL-HLS-hez ExoPlayer 2.14.0 vagy újabb verzió szükséges.

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

HLS optimalizálása mobil hálózatokhoz

A mobilalkalmazások különleges megközelítést igényelnek a HLS konfigurálásához a celluláris hálózatok instabilitása és a forgalmi korlátozások miatt. A fő ajánlások a következőket foglalják magukban: a kezdeti bitráta beállítása a hálózat típusa alapján (Wi-Fi vagy celluláris), rövidebb szegmens időtartam (2-4 másodperc) használata a gyorsabb alkalmazkodáshoz, a puffer előzetes betöltése Wi-Fi-re váltáskor, valamint a hangsáv előnyben részesítése gyenge jel esetén.

Az Apple a HLS Authoring Specification for Apple Devices (2024) dokumentációjában legfeljebb 6 másodperces szegmensméretet javasol mobileszközökhöz és legalább 4 bitráta változatot. A mobil hálózatokon történő forgalom megtakarítása érdekében a szervernek Cache-Control HTTP fejléccel kell szolgálnia a szegmenseket, lehetővé téve a tartalom gyorsítótárazását a távközlési szolgáltatók közbenső proxy szerverein.

Gyakran Ismételt Kérdések

Miben különbözik a HLS a szokásos MP4 videótól?

MP4 — egy tároló a teljes videófájl számára, amelyet a lejátszás megkezdése előtt teljesen le kell tölteni. A HLS a videót kis szegmensekre bontja, és lehetővé teszi a nézés megkezdését 2-6 másodperccel az első szegmens letöltése után, automatikusan hozzáigazítva a minőséget az internet sebességéhez.

Használható-e a HLS Apple szerver nélkül?

Igen, a HLS nem igényel Apple szerver szoftvert. Bármely HTTP szerver (Nginx, Apache, CDN) terjeszthet HLS tartalmat. A videó HLS-be kódolásához FFmpeg vagy professzionális kódolók használatosak. Az egyetlen követelmény a .m3u8 fájlok MIME típusának helyes konfigurálása.

Támogatja-e a HLS az élő közvetítéseket?

Igen, a HLS-t eredetileg élő közvetítésre tervezték. Élő közvetítés esetén a média lejátszási lista dinamikusan frissül: a szerver új szegmenseket ad hozzá és eltávolítja a régieket. A Low-Latency HLS (LL-HLS) 2-6 másodpercre csökkenti a késleltetést, ami alkalmassá teszi a HLS-t sportközvetítések és hírműsorok számára.

Miért van szükség master lejátszási listára a HLS-ben?

Master playlist egyesíti ugyanazon tartalom összes változatát különböző bitrátákkal és felbontásokkal. A lejátszó ezt tölti le elsőként, elemzi az egyes változatok jellemzőit (bitráta, felbontás, kodek), és kiválasztja az aktuális hálózati körülményekhez optimálisat. Master lejátszási lista nélkül az adaptív minőségváltás lehetetlen.

Hogyan védhető meg a HLS tartalom a letöltéstől?

A HLS támogatja a szegmensek AES-128 titkosítását és az integrációt DRM rendszerekkel: FairPlay Streaming (Apple), Widevine (Google) és PlayReady (Microsoft). A titkosítási kulcsok egy külön védett csatornán kerülnek továbbításra. Kiegészítő védelemként token alapú hitelesítés használható a lejátszási listákhoz való hozzáféréshez.

Összefoglalás

  • HLS — az Apple adaptív streamelési protokollja, HTTP-n alapul, M3U8 lejátszási listákat és média szegmenseket használ.
  • Adaptivitás több bitráta változaton keresztül (ABR) zökkenőmentes lejátszást biztosít bármilyen hálózati körülmények között.
  • LL-HLS 2-6 másodpercre csökkenti az élő közvetítések késleltetését, megközelítve az RTMP mutatóit.
  • iOS-en a HLS a beépített AVPlayeren keresztül játszható le hardveres gyorsítással; Androidon — ExoPlayeren keresztül.
  • Szegmens formátumok: MPEG-2 TS (.ts) kompatibilitáshoz és fMP4 (.m4s) HDR/HEVC-hez.
  • Tartalomvédelem AES-128 titkosítással és DRM-mel (FairPlay, Widevine).
  • Ajánlott HLS használata bármilyen iOS/macOS streamelési projekthez és cross-platform megoldásokhoz ExoPlayeren keresztül Androidon.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is