# Stríming

**Stríming** (iné názvy: **streaming**, **strímovanie**, **streamovanie**, **postupné sťahovanie**, **vysielanie prúdu údajov**, **prenos prúdu údajov**, angl. *streaming*; z anglického *stream* *= prúd*) je doručovanie audio a video súborov klientovi zo servera cez internet. Stream je technológia, ktorá nepretržite prenáša audiovizuálny obsah medzi zdrojom a koncovým užívateľom. Dáta sú streamované (prenášané, vysielané) prostredníctvom elektronickej siete. Prenos cez web pomocou streamovania sa nazýva webcasting. Webcasting sa môže uskutočňovať v reálnom čase (internetová televízia alebo rádio) alebo metódou Video on demand (napr. YouTube – prehrávanie aj v reálnom čase aj metódou video on demand). Pre streamovanie videa alebo zvuku viacerým užívateľom je potrebný streamovací server, ktorý zaisťuje plynulý tok dát a komunikáciu medzi počítačmi. Poskytovateľ online zábavy (hudba, filmy atď.), ktorý dodáva obsah prostredníctvom internetového pripojenia do počítača, televízora alebo mobilného zariadenia zákazníka (predplatiteľa) sa nazýva streamovacia služba.

## História streamovacích médií a live streamingu

### 1990 - 2000

Prvý priamy prenos sa uskutočnil 24. júna 1993. Vystupovala v ňom skupina Severe Tire Damage zložená z počítačových vedcov a vysielaný bol z budovy Xerox PARC v Kalifornii pomocou siete Mbone, čo je skratka pre „Multicast Backbone“. V roku 1995 bola z nápadu Roba Glasera, výkonného predstaviteľa spoločnosti Microsoft, založená spoločnosť RealNetworks. Táto spoločnosť vyvinula RealPlayer, jeden z prvých prehrávačov médií schopných živého vysielania. V septembri roku 1995 bol tento prehrávač využitý americkým športovým kanálom ESPN na prenos zápasu Seattle Mariners proti New York Yankees. V roku 1997 RealNetworks spustili program RealVideo, ktorý bol jedným z prvých na komercializáciu živého vysielania. V roku 1998 vyšiel Real-Time Streaming Protocol (RTSP).

### 2001 - 2010

DVD Forum v roku 2002 uviedli funkciu Adaptive Bitrate Streaming, čo je streamovanie s adaptívnou bitovou rýchlosťou. V roku 2005 bol založený YouTube, ktorý už tri roky po svojom vzniku hostil svoj prvý živý prenos, no sám živé prenosy užívateľom umožnil zdieľať až v roku 2011. Rok po vzniku YouTube prišla Justin.tv, neskôr známa ako Twitch, čo je americká služba, ktorá sa dnes hlavne zameriava na živé vysielanie videohier. V roku 2009 Apple predstavil HLS (HTTP Live Streaming). Rok na to Steve Jobs skritizoval Adobe Flash (multimediálnu softvérovú platformu používanú na produkciu animácií, aplikácií a vstavaných videoprehrávačov webových prehliadačov) a vyhlásil, že iPhone ho už viac podporovať nebude a prešiel na svoj HLS.

### 2011 - 2020

V roku 2012 sa stal novým medzinárodným štandardom MPEG-DASH, na ktorý v januári 2015 prešiel aj YouTube, no to malo za následok oneskorenie prenosu. Neskôr v roku 2015 bol spustený Periscope, ktorý umožňoval komukoľvek vysielať naživo zo svojho mobilného zariadenia. V roku 2019 Apple uviedol Low-Latency HLS (HLS s nízkym oneskorením). Nakoniec, v decembri 2020 bol úplne zrušený Adobe Flash a už nie je viac podporovaný žiadnou platformou.

## Kvalita videa a zvuku

Na prenos audiovizuálneho obsahu cez internet sú potrebné kodeky, ktoré slúžia na zmenšenie objemu dát. Na streaming sa používajú napríklad MPEG-4, H.264, H.265. Videá dnes môžu byť streamované pri bitovej rýchlosti až 8000 kbps, čo nám dá video s rozlíšením 1920×1080p (HD 1080). Prenos vo vysokom rozlíšení dnes poskytujú rôzne streamovacie servery (napr. YouTube, Twitch.tv, Stream.cz).

Na streaming zvukov sa využívajú kodeky ako napr. AAC, Opus, MP3, OGG Vorbis. Pri streamovaní zvuku sa využíva ABR (Adaptive Bitrate Streaming), čo znamená, že prehrávač prehrávajúci stream zo servera dokáže automaticky meniť kvalitu zvuku v prípade zhoršenia alebo zlepšenia kvality internetového pripojenia poslucháča.

## Rozdiel medzi sťahovaním a streamovaním

Streamovanie prebieha v reálnom čase a je efektívnejšie ako sťahovanie mediálnych súborov. Ak sa stiahne súbor videa alebo audia, jeho celá kópia sa uloží na pevný disk zariadenia a súbor sa nebude dať prehrať, kým sa úplne nedokončí sťahovanie. Ak je namiesto toho video alebo audio streamované, prehliadač prehrá video bez toho, aby ho skutočne skopíroval a uložil. Video sa načíta po kúskoch (buffering) namiesto načítania celého súboru naraz a informácie, ktoré prehliadač načíta, sa neuložia lokálne.

## Buffering

Prehrávače streamovaných médií načítajú stream o niekoľko sekúnd vopred, takže v prípade krátkeho prerušenia pripojenia môže prehrávanie videa/audia pokračovať bez zastavenia. Toto je známe ako ukladanie do vyrovnávacej pamäte. Ukladanie do vyrovnávacej pamäte zaisťuje plynulé a nepretržité prehrávanie videí. Avšak pri pomalom pripojení alebo ak má sieť veľké oneskorenie, môže načítanie videa do vyrovnávacej pamäte trvať dlhšie.

## Adaptive Bitrate Streaming (ABR)

Adaptívne streamovanie (známe aj ako adaptívne streamovanie dátového toku) je technológia navrhnutá tak, aby doručovala používateľovi video najefektívnejším možným spôsobom a v najvyššej použiteľnej kvalite. ABR umožňuje poskytovateľovi videa vytvoriť odlišné video pre každú z veľkostí obrazovky (alebo zariadení), na ktoré chce zacieliť (PC, TV, mobil). ABR spôsobuje, že ak je nižšia rýchlosť internetu, tak sa zníži aj kvalita videa tak, aby pokračovalo bez zastavenia (napr. z 1920×1080 px na 1280×720 px).

## Codec (Kodek)

Kodeky sú kompresné technológie a majú dve zložky, kodér na kompresiu súborov a dekodér na dekompresiu. Kodeky pre zvuk sú napríklad AAC, ALAC, FLAC a pre video HEVC, MPEG-2, VP9, AV1.

Existujú dva druhy kodekov: bezstratový a stratový. Bezstratové kodeky reprodukujú po dekompresii presne rovnaký súbor ako bol originál. Existuje niekoľko bezstratových video kodekov, vrátane kodeku Apple Animation a Lagarith, ktoré však nedokážu komprimovať video na dostatočne nízku veľkosť pre rýchly prenos dát pri streamovaní. Stratové kodeky naopak vytvárajú po dekompresii faksimile (napodobeninu) pôvodného súboru, ale nie pôvodný súbor. Stratové kodeky majú jednu nevýhodu– čím je rýchlosť prenosu dát nižšia, tým menej vyzerá (alebo znie) dekomprimovaný súbor ako originál.

## Protokoly používané na streamovanie

Protokol je súbor pravidiel, ktorý určuje, akým spôsobom majú dáta prechádzať z jedného komunikačného systému do druhého.

### Tradičné streamovacie protokoly

#### RTMP (Real-Time Messaging Protocol)

Primárnou úlohou tohto protokolu bolo umožniť plynulý prenos zvýšeného množstva údajov, ktoré bolo potrebné na prehrávanie videa v prehrávači Adobe Flash Player. Výhodou RTMP je, že nevyžaduje buffering (ukladanie do vyrovnávacej pamäte) a má relatívne malé oneskorenie (5 sekúnd).

* Video kodeky: H.264, VP8, VP6, Sorenson Spark®, Screen Video v1 & v2
* Audio kodeky: AAC, AAC-LC, HE-AAC+ v1 & v2, MP3, Speex, Opus, Vorbis
* Ďalšie formáty: RTMPS, RTMPE, RTMPT, RTMFP

#### RTSP (Real-Time Streaming Protocol)

Protokol, ktorý sa používa na riadenie streamovacích mediálnych serverov prostredníctvom funkcií „pause“ a „play“. Komunikáciou so serverom tak uľahčuje kontrolu streamovaných médií v reálnom čase („sieťové diaľkové ovládanie“ pre multimediálne servery). Výhodou RTSP je, že je podporovaný väčšinou IP kamier a jeho oneskorenie sú iba 2 sekundy.

* Video kodeky: H.265, H.264, VP9, VP8
* Audio kodeky: AAC, AAC-LC, HE-AAC+ v1 & v2, MP3, Speex, Opus, Vorbis
* Ďalšie formáty: RTP, RTCP

### Adaptívne protokoly založené na HTTP

#### Apple HLS  (HTTP Live Streaming)

Apple HLS je adaptívny streamingový komunikačný protokol vytvorený spoločnosťou Apple na komunikáciu so zariadeniami iOS a Apple TV a počítačmi Mac. HLS je široko podporovaný na streamovacích serveroch od dodávateľov ako Adobe, Microsoft, RealNetworks a Wowza. Výhodou pri tomto protokole je, že podporovaný širokou škálou streamovacích médií a má funkciu ABR.

* Video kodeky: H.265, H.264
* Audio kodeky: AAC-LC, HE-AAC+ v1 & v2, xHE-AAC, Apple Lossless, FLAC

* Ďalšie formáty: Low-Latency HLS, PHLS (Protected HLS)

#### Low-Latency HLS

LL-HLS rozširuje protokol HLS, aby umožnil streamovanie videa s nízkym oneskorením pri zachovaní škálovateľnosti. Nový režim znižuje oneskorenie videa na verejných sieťach do rozsahu štandardného televízneho vysielania. Výhodou tohto protokolu je veľmi nízke oneskorenie (2 sekundy a menej), vysoká kvalita, spätná kompatibilita a škálovateľnosť (schopnosť systému, siete alebo procesu zvládnuť rastúci objem práce alebo jeho potenciál rozšíriť tak, aby mohol tento nárast spracovať).

#### MPEG-DASH (Dynamic Adaptive Streaming over HTTP)

The Moving Pictures Experts Group vytvorili MPEG-DASH ako alternatívu k HLS. Nepodporuje ho iOS ani Apple TV no výhodou je, že umožňuje použitie akéhokoľvek kódovacieho štandardu a je to medzinárodný štandard pre ABR. Nevýhodou je ale veľké oneskorenie v rozsahu 6 až 30 sekúnd.

### Nové technológie

#### SRT (Secure Reliable Transport)

SRT je bezplatný, voľne dostupný video protokol, ktorý podporuje vysokovýkonné streamovanie s nízkym oneskorením cez preťaženú alebo nepredvídateľnú sieť, ako je napríklad verejný internet. Zaoberá sa bezpečnostnými problémami. Výhody sú nízke oneskorenie aj cez menej kvalitné siete (3 sekundy) a vysoká kvalita.

#### WebRTC (Web Real-Time Communication)

WebRTC je technológia, ktorá umožňuje webovým aplikáciám a stránkam prijímať a voliteľne streamovať audio a video médiá, ako aj vymieňať ľubovoľné údaje medzi prehliadačmi bez potreby sprostredkovateľa. Jeho výhodou je extrémna rýchlosť (oneskorenie menej ako 500 milisekúnd).

* Video kodeky:  H.264, VP8 (povinné); možno použiť aj AV1 alebo VP9
* Audio kodeky: Opus, iSAC, iLBC

## TCP (Transmission Control Protocol) vs UDP (User Datagram Protocol)

TCP a UDP sú transportné protokoly, čo znamená, že sú používané na presun údajov cez siete. Oba sa používajú s internetovým protokolom (IP). TCP je pomalší, no zabezpečuje, že všetky dátové balíky dorazia v poriadku. UDP je síce rýchlejší, no môže sa stať, že niektoré dáta sa počas prenosu stratia a výsledný súbor nebude úplne rovnaký ako bol na počiatku.

Pre streamovanie je v niektorých prípadoch oveľa dôležitejšia rýchlosť ako spoľahlivosť. Napríklad, ak sa niekto zúčastňuje videokonferencie, uprednostňuje interakciu s ostatnými účastníkmi konferencie v reálnom čase a nie čakanie na doručenie každého bitu videa. Niekoľko stratených dát preto nie je veľkým problémom a mal by sa tu použiť protokol UDP.

V iných prípadoch je pre streamovanie dôležitejšia spoľahlivosť (aby vo výslednom videu/audiu nič nechýbalo). Napríklad HTTP live streaming (HLS) aj MPEG-DASH sú streamingové protokoly, ktoré na prenos používajú TCP.

## Streamovacie platformy a služby

### Audio

Spotify, Apple Music, Tidal HiFi, Amazon Music Unlimited, Spotify, YouTube Music

### Video

Netflix, YouTube, Amazon Prime Video, Disney+, Hulu, HBO Now/HBO Go, Vimeo, Apple TV

### Streamovacie služby

Streamovaciu službu Disney Streaming tvoria platformy Disney+, Hulu, ESPN+

Medzi najznámejšie streamovacie služby patrí Netflix, Amazon Prime Video, Disney+.

Ďalšia streamovacie služby s viac ako 92 miliónmi platiacich zákazníkov v roku 2021 boli ázijské Tencent Video, iQIYI a HBO.

## Pseudostreaming

Keďže streamovanie je zo strany prevádzkovateľa streamovacieho servera finančne a technologicky náročné, bola vyvinutá jednoduchšia alternatíva na streamovanie audiovizuálneho záznamu, ktorá sa nazýva pseudostreaming. Pseudostreaming simuluje správanie sa skutočného streamingu, a to najmä zo strany servera. Svojimi možnosťami a schopnosťami sa však zďaleka nevyrovná skutočnému streamingu. Cieľom používania pseudostreamingu je obyčajne dosiahnuť, s prijateľnými nákladmi a štandardnými softvérovými technológiami, možnosť prechádzania po časovej osi audiovizuálneho záznamu v prehrávači na strane klienta na akúkoľvek pozíciu bez toho, aby používateľ musel čakať na načítavanie dát celého záznamu.

## Referencie