Adaptive Bitrate (ABR) — to technologia strumieniowania, która dynamicznie zmienia jakość wideo w zależności od przepustowości kanału użytkownika. W przeciwieństwie do progresywnego pobierania, ABR dzieli wideo na małe segmenty po 2–10 sekund i przełącza się między nimi w locie. Według badania Bitmovin Video Developer Report (2025), 86% serwisów streamingowych używa ABR do zapewnienia płynnego odtwarzania na urządzeniach mobilnych.
Najważniejsze
Adaptive Bitrate (ABR) — to metoda strumieniowania treści multimedialnych, w której plik wideo jest kodowany w wielu wariantach o różnej przepływności i rozdzielczości, a odtwarzacz automatycznie wybiera odpowiedni wariant w czasie rzeczywistym. Użytkownik otrzymuje maksymalną możliwą jakość bez buforowania przy aktualnej prędkości internetu.
W przeciwieństwie do tradycyjnego progresywnego pobierania (progressive download), ABR nie wymaga ładowania całego pliku — odtwarzacz żąda krótkich segmentów o potrzebnej jakości i może przełączyć się na inną przepływność między segmentami. To czyni tę technologię niezastąpioną w aplikacjach mobilnych, gdzie prędkość sieci stale się zmienia.
Technologia adaptacyjnego strumieniowania została po raz pierwszy komercyjnie zrealizowana przez Move Networks w 2006 roku do transmisji kanału ABC. W 2009 roku Apple wprowadziło HTTP Live Streaming (HLS), który stał się pierwszym szeroko rozpowszechnionym standardem ABR opartym na HTTP i nadal dominuje w ekosystemie iOS.
W 2012 roku MPEG opublikował standard MPEG-DASH (Dynamic Adaptive Streaming over HTTP) jako uniwersalny format ABR, niezwiązany z konkretnym dostawcą. DASH jest obsługiwany przez wszystkie główne platformy i jest jedynym standardem ABR przyjętym przez ISO.
Proces strumieniowania ABR rozpoczyna się na etapie przygotowania treści: oryginalne wideo jest kodowane w kilku wariantach o różnej przepływności — na przykład 144p, 360p, 720p, 1080p i 4K. Każdy wariant jest dzielony na segmenty o jednakowej długości, zwykle 2, 4, 6 lub 10 sekund.
Na serwerze tworzony jest plik manifestu, który opisuje dostępne warianty (representations), ich przepływność, rozdzielczość, kodek oraz linki do segmentów. Odtwarzacz pobiera manifest, analizuje go i rozpoczyna odtwarzanie od najniższej przepływności, aby szybko wystartować.
<!-- MPEG-DASH MPD manifest -->
<MPD profiles="urn:mpeg:dash:profile:isoff-live:2011">
<Period>
<AdaptationSet mimeType="video/mp4">
<Representation id="720p" bandwidth="2800000"
width="1280" height="720">
<SegmentTemplate duration="4"
media="seg_$Number$.m4s"/>
</Representation>
</AdaptationSet>
</Period>
</MPD>
Podczas odtwarzania algorytm ABR po stronie klienta stale monitoruje stan sieci i bufora. Jeśli przepustowość spada, odtwarzacz żąda kolejnych segmentów z niższą przepływnością, aby uniknąć buforowania. Gdy sieć się poprawia, przepływność jest zwiększana.
Przełączanie między przepływnościami odbywa się na granicach segmentów, co sprawia, że zmiana jakości jest prawie niezauważalna dla użytkownika. Nowoczesne odtwarzacze potrafią synchronizować klatki kluczowe między różnymi wariantami, aby przełączanie odbywało się bez wizualnych artefaktów.
Trzy główne protokoły ABR dominują na rynku strumieniowania wideo: HLS od Apple, MPEG-DASH jako otwarty standard i Smooth Streaming od Microsoft. Każdy protokół określa format manifestu, sposób segmentacji i mechanizm szyfrowania.
| Protokół | Twórca | Manifest | Segmenty | Szyfrowanie |
|---|---|---|---|---|
| HLS | Apple | .m3u8 (M3U playlist) | .ts lub .fmp4 | AES-128, SAMPLE-AES |
| MPEG-DASH | ISO/MPEG | .mpd (XML) | .m4s lub .webm | CENC (Common Encryption) |
| Smooth Streaming | Microsoft | .ismc (XML, IIS) | .ismv / .isma | PlayReady (AES-128 CT) |
HLS — najpopularniejszy protokół ABR, wbudowany w iOS, tvOS i Safari na macOS. Format manifestu oparty jest na rozszerzonych playlistach M3U, gdzie główna playlista (master playlist) zawiera linki do wariantów (variant streams) o różnych przepływnościach i rozdzielczościach.
Każdy wariant odwołuje się do własnej playlisty medialnej z listą segmentów. HLS obsługuje transmisje na żywo poprzez mechanizm przesuwanego okna (sliding window), gdzie stare segmenty są usuwane, a nowe dodawane w miarę napływu.
MPEG-DASH — jedyny standard ABR przyjęty przez ISO/IEC 23009-1 w 2012 roku. W przeciwieństwie do HLS, DASH używa manifestu XML (MPD — Media Presentation Description) i nie jest związany z konkretnym formatem kontenera — obsługuje fMP4, WebM i inne.
DASH zapewnia elastyczną segmentację: segmenty mogą mieć różną długość w ramach jednego strumienia, co optymalizuje relację między opóźnieniem a narzutem na żądania HTTP. Dla transmisji na żywo DASH obsługuje szablony segmentów (SegmentTemplate).
Według testów Bitmovin (2025), HLS i DASH wykazują porównywalną wydajność pod względem czasu uruchomienia i częstotliwości przełączeń przepływności. HLS zapewnia mniejsze opóźnienie na iOS dzięki wsparciu sprzętowemu, DASH jest preferowany na Androidzie ze względu na bardziej elastyczną konfigurację algorytmów ABR.
Serce ABR — algorytm wyboru przepływności, który decyduje, który wariant zażądać jako następny. Istnieją trzy główne rodziny algorytmów: oparte na przepustowości (throughput-based), oparte na buforze (buffer-based) i hybrydowe (hybrid). Każde podejście ma swoje mocne strony i ograniczenia.
Throughput-based algorytmy szacują przepustowość sieci na podstawie prędkości pobierania poprzednich segmentów. Algorytm wybiera maksymalną przepływność, która nie przekracza 80–90% zmierzonej przepustowości, pozostawiając zapas na fluktuacje.
Wadą tego podejścia jest wrażliwość na krótkotrwałe skoki prędkości. Jeśli sieć gwałtownie spadnie podczas pobierania segmentu, oszacowanie przepustowości jest zaniżane, a jakość niepotrzebnie obniżana.
Buffer-based algorytmy podejmują decyzje na podstawie wypełnienia bufora odtwarzacza. Jeśli bufor jest wypełniony w ponad 70%, algorytm podnosi przepływność; jeśli bufor spada poniżej 20% — gwałtownie obniża jakość, aby zapobiec buforowaniu.
Główną zaletą jest brak fałszywych obniżeń przy krótkotrwałych spadkach sieci, ponieważ bufor wygładza fluktuacje. Wadą jest powolna reakcja na trwałe zmiany przepustowości.
Nowoczesne odtwarzacze, takie jak ExoPlayer i AVPlayer, używają algorytmów hybrydowych, łączących ocenę przepustowości i stan bufora. ExoPlayer domyślnie używa algorytmu ABR DefaultTrackSelector, który uwzględnia oba parametry.
W latach 2024–2025 aktywnie wdrażane są algorytmy oparte na ML, przewidujące przyszłe zmiany sieci na podstawie danych historycznych. Netflix, YouTube i Twitch używają własnych modeli uczenia maszynowego do optymalizacji wyboru przepływności, co zmniejsza liczbę przełączeń o 30–40%.
Aplikacje mobilne stawiają szczególne wymagania ABR ze względu na niestabilność sieci komórkowych (4G/LTE, 5G) i ograniczoną moc obliczeniową urządzeń. Odtwarzacz musi szybko dostosowywać się do zmian sieci, minimalizując przy tym zużycie energii i transfer danych.
Według OpenSignal (2025), średnia prędkość 4G w warunkach miejskich waha się od 5 do 50 Mbit/s, a w ruchu może spaść do 1 Mbit/s. Algorytmy ABR muszą przełączać się między przepływnościami w ciągu 1–2 segmentów, aby uniknąć buforowania przy wjeździe do tunelu lub windy.
val trackSelector = DefaultTrackSelector(context).apply {
setParameters(buildUponParameters {
setMaxVideoSizeSd()
setAllowVideoMixedMimeTypeAdaptiveness(true)
setPreferredVideoRoleFlags(
roleFlags(C.ROLE_FLAG_DESCRIBES_VIDEO_AND_AUDIO)
)
})
}
val adaptiveTrackSelectionFactory =
AdaptiveTrackSelection.Factory()
val player = ExoPlayer.Builder(context)
.setTrackSelector(trackSelector)
.setMediaSourceFactory(
DashMediaSource.Factory(dataSourceFactory)
)
.build()
Dla aplikacji mobilnych kluczowe jest szybkie ładowanie początkowe (time-to-first-frame poniżej 2 sekund). Zaleca się rozpoczynanie odtwarzania od najniższej dostępnej przepływności, a następnie podnoszenie jakości w miarę wypełniania bufora — strategia start-low-and-rise.
Zużycie energii jest również ważne: sprzętowe przyspieszenie dekodowania powinno być wykorzystywane dla wszystkich przepływności. Programowe dekodowanie wysokich przepływności (1080p i wyżej) na starszych urządzeniach może prowadzić do przegrzewania i dławienia.
Kluczowe metryki jakości ABR: liczba przełączeń przepływności (switches), czas do pierwszej klatki (TTFF), stosunek przełączeń do całkowitego czasu oglądania. Indeks jakości QoE (Quality of Experience) obliczany jest jako ważona suma przepływności, kary za przełączenia i kary za buforowanie.
Do monitorowania ABR zaleca się zbieranie analityki z odtwarzacza: aktualna przepływność, rozmiar bufora, przepustowość sieci, liczba i typy przełączeń. Dane pomagają dostawcom treści optymalizować zestaw dostępnych przepływności i dostroić segmentację do konkretnej publiczności.
Często zadawane pytania
Adaptive Bitrate (ABR) — technologia strumieniowania, dynamicznie zmieniająca jakość wideo w zależności od warunków sieci. Odtwarzacz dzieli wideo na segmenty i wybiera dla każdego optymalną przepływność, zapewniając płynne odtwarzanie bez buforowania na urządzeniach mobilnych.
HLS — protokół Apple, używający playlist M3U i strumieni transportowych (.ts). MPEG-DASH — otwarty standard ISO z manifestem XML (.mpd) i elastycznymi formatami segmentów. HLS jest lepszy na iOS, DASH — na Androidzie i w sieci.
ABR poprawia postrzeganą jakość poprzez eliminację buforowania: wideo może chwilowo obniżyć rozdzielczość przy pogorszeniu sieci, ale nie zatrzymuje się. Użytkownik woli płynne wideo w 720p niż przerywane 4K z ciągłym buforowaniem.
ExoPlayer używa algorytmu hybrydowego DefaultTrackSelector, uwzględniającego przepustowość sieci i wypełnienie bufora. Dostępne są również strategie Throughput-based i Buffer-based z możliwością dostosowania przez AdaptiveTrackSelection.Factory.
Długość segmentów określa częstotliwość adaptacji: krótkie segmenty (2 sekundy) szybciej reagują na zmiany sieci, ale generują więcej żądań HTTP. Segmenty 4–6 sekund są optymalne dla urządzeń mobilnych pod względem stosunku szybkości adaptacji do narzutu.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również