Striimi latentsus: tehniline juhend otseülekannete insenerile

Välisüritusel kasutatav otseülekande tehnika koos vajalike juhtmetega

Lühidalt:

  • Latentsus kujutab endast vaataja ja kaamera vahelist aega ning selle vähendamine on interaktiivsete ülekannete jaoks oluline. Parim strateegia hõlmab protokolli valikut, kodeerija seadistusi ning CDN-i lähemale viimist, et saavutada madalaim võimalik latentsus. Eestis sobivad kõige paremini WebRTC ja LL-HLS protokollid, mis pakuvad vastavalt reaalajas suhtlust ja stabiilsust suurtele vaatajaskondadele.

Striimi latentsus on aeg, mis kulub kaamera kaadrist kuni vaataja ekraanini — seda nimetatakse glass-to-glass latentsuseks. Interaktiivseks suhtluseks (Q&A, oksjonid, live shopping) on eesmärk võimalikult madal latentsus. Kaasava vaatamise jaoks sobib mõõdukas latentsus, tavalise broadcast-stiili puhul aktsepteeritakse kõrgemat latentsust.

Kiire tegevusplaan, kui tahad latentsust kohe vähendada:

  • Vali protokoll vastavalt eesmärgile. WebRTC saavutab 100–500 ms, LL-HLS 2–5 s, traditsiooniline HLS aga 6–30 s.
  • Vähenda kodeerija puhvreid ja GOP-i. Keyframe’i intervall 1–2 sekundit, B-kaadrid välja.
  • Vii server vaatajatele lähemale. CDN-i servaarvutus (edge computing) lõikab geograafilisest kaugusest tuleneva viivituse.
  • Häälesta mängija puhver. Liiga agressiivne ehk lühike puhver ilma tekitab rohkem hakkimist. Ehk lahendades latentsuse probleemi on lihtne hoopis teise reha otsa astuda.

Ära alusta katsetamist 0 ms puhvriga, kui sul puudub tugev CDN-infrastruktuur. See on kõige levinum viga, mille oleme aastate jooksul näinud, ja see lõpeb alati sama tulemusega: vaataja näeb rohkem laadimisrattaid kui sisu.

Võrdluseks: YouTube’i ultra-low latency eesmärk on alla 5 sekundi, low latency alla 10 sekundi. Mõlemad suurendavad puhverdamise riski võrreldes tavalise režiimiga.


Sisukord

Kust latentsus tegelikult tuleb ja kui palju?

See on küsimus, mille vastus üllatab paljusid. Latentsus ei tule ühest kohast, vaid kumuleerub igas etapis. Vaatame need läbi.

Kodeerija (encoder)

GOP-i pikkus on üks suurimaid mõjutajaid. Kui keyframe’i intervall on pikk, peab mängija ootama keyframe’i saabumist alustamiseks. Lühendades keyframe’i intervalli oluliselt, väheneb latentsus märgatavalt. B-kaadrid (bidirectional frames) lisavad kodeerimisviivitust, sest kodeerimine vajab tuleviku kaadrite infot. Slice-encoding ja low-latency režiimid (nt x264 zerolatency preset) lõikavad kodeerimisviivituse minimaalseks.

Segmentimine ja protokollimudelid

Traditsiooniline HLS jagab video 2–10-sekundilisteks segmentideks. Mängija peab ootama, kuni vähemalt kaks segmenti on täielikult laetud, enne kui esitamine algab. See tähendab, et kui segment (chunk) on 6 sekundit, siis vaataja ei saagi olla ajast maas vähem kui 12 sekundit. See võib tunduda küll, palju, aga ühesuunaise vaatamise puhul ei mängi see tihti rolli ja tagab parema vaatamiskogemuse.
LL-HLS ja LL-DASH kasutavad osalisi segmente (partial chunks) suurusega 200–500 ms, mis lõikab selle ootamise drastiliselt. WebRTC puhvrid on 10–50 ms võrreldes traditsiooniliste 2–10-sekundiliste puhvritega.

Võrgutransport

Ühesuunaline latentsus sõltub füüsilisest kaugusest ja marsruutimisest. Jitter ehk pakettide ebaühtlane saabumine sunnib mängijat puhvrit suurendama. Pakettikaod nõuavad uuesti saatmist (ARQ) või FEC-i, mis mõlemad lisavad viivitust. WebRTC P2P-ühenduse puudumisel kasutatakse TURN-vahendajat, mis lisab tavaliselt 10–30 ms latentsust.

CDN ja geograafiline kaugus

Geograafiline kaugus lisab mõõdetavat latentsust ning CDN-vahemälud mõjutavad samuti ooteaega, eriti esimest vaatajat teenindades. RFC 9317 kirjeldab, kuidas võrguoperatsioonid ja transportprotokollid mõjutavad vaatajakogemust tervikuna.

Tüüpilised latentsuskomponendid

KomponentTüüpiline vahemik
Kodeerimine (low-latency preset)50–200 ms
Segmentimine (LL-HLS partial chunk)200–500 ms
Võrgutransport (Eesti sisene)5–30 ms
CDN/edge viivitus10–50 ms
Mängija puhver (agressiivne)200–500 ms
Mängija puhver (konservatiivne)6–30 s
Viivete osad ja nende tavapärased kestusvahemikud – ülevaatlik skeem


Milline protokoll sobib sinu üritusele?

Protokollivalik on kõige olulisem üksik otsus, mida teed. Kõik muu on häälestamine.

ProtokollEeldatav latentsusStabiilsus pakettkaogaRakendamise keerukusInfrastruktuuri nõudedParim kasutusjuht
WebRTC100–500 msNõrk (vajab TURN)Kõrge (SFU/P2P)TURN-serverid, SFUInteraktiivne: Q&A, oksjon
SRT100–500 msHea (ARQ)KeskmineUDP-port, SRT-serverContribution link, remote production
LL-HLS / LL-DASH1–5 sHea (CDN-tugi)KeskmineHTTP/2, CDN partial-segment tugiSuur vaatajaskond, madal latentsus
Traditsiooniline HLS6–30 sVäga heaMadalStandardne CDNBroadcast, VOD-stiil
RTMP (ingest)1–3 s (ingest)KeskmineMadalRTMP-serverIngest-protokoll, mitte lõppjaotus

WebRTC on parim valik, kui vajad tõelist reaalaja suhtlust. Kuid skaleerimisega on lood keerulisemad: P2P töötab hästi kuni mõnekümne vaatajani, suuremate mahtude jaoks vajad SFU (Selective Forwarding Unit) arhitektuuri. Ligikaudu 20% ühendustest ei saa P2P-ühendust tulemüüride ja NAT-piirangute tõttu, mistõttu TURN-serverite planeerimine on kohustuslik.

SRT on loodud ebastabiilsete võrkude jaoks. Selective retransmission tähendab, et kaotatud paketid saadetakse uuesti ilma kogu voo katkestamata. See teeb SRT-i ideaalseks contribution-lingiks stuudiost ingest-punkti, eriti kui töötad mobiilse ühenduse või avaliku WiFi-ga.

LL-HLS ja LL-DASH on praegu parim kompromiss suurema vaatajaskonna ja madala latentsuse vahel. Partial-segment mehhanism saadab 200–500 ms tükke enne segmendi lõpetamist, mis lõikab traditsioonilise HLS-i latentsuse murdosaks. CDN-tugi on hea, kuid nõuab HTTP/2 ja chunked transfer encoding toetust.

Traditsiooniline HLS annab kõige stabiilsema pildi, kuid 6–30-sekundiline latentsus muudab selle sobivaks ainult broadcast-stiili ülekanneteks, kus vaataja ei oota reaalajas vastust. Dolby OptiView toob välja, et uued protokollid nagu HESP võivad viia latentsuse ligikaudu 1 sekundi juurde, kuid nõuavad hoolikat CDN-i ja kodeeringuplaneerimist.

RTMP on tänapäeval peamiselt ingest-protokoll, mitte lõppjaotus. OBS ja ffmpeg kasutavad seda signaali saatmiseks serverisse, kust edasi läheb juba HLS, LL-HLS või muu protokoll.


Kuidas latentsust praktikas vähendada?

Siin on järjekord, mida järgida. Ära hüppa sammu 4 juurde, kui samm 1 on tegemata.

  1. Vali õige protokoll (vt eelmine sektsioon). See on suurim üksik mõjutaja.
  2. Seadista kodeerija madalale latentsusele.
  3. Vii serv vaatajatele lähemale CDN-i või edge-arvutuse abil.
  4. Häälesta mängija puhver vastavalt võrgu kvaliteedile.
  5. Paranda võrgu kvaliteeti QoS-seadete, 5G või kaabelühendusega.

ffmpeg-i näide madalaks latentsuseks

ffmpeg -i input.mp4 
  -c:v libx264 -preset veryfast -tune zerolatency 
  -g 60 -keyint_min 60 
  -bf 0 
  -c:a aac -b:a 128k 
  -f flv rtmp://ingest.server/live/streamkey

-g 60 tähendab 30 fps juures 2-sekundilist GOP-i. -tune zerolatency keelab sisemised puhvrid. -bf 0 eemaldab B-kaadrid.

Lähiplaan videokodeerija riistvarast koos ühendatud kaablitega

AV1 ja HEVC pakuvad paremat bitivoo efektiivsust, kuid kodeerimisaeg on märkimisväärselt pikem. Reaalajas ülekanneteks kasuta neid ainult riistvarakiirendusega (NVENC, QuickSync).

CDN ja edge

Chunked transfer encoding on LL-HLS/LL-DASH puhul kohustuslik. Ilma selleta ei saa CDN osalisi segmente edasi saata. HTTP/2 multiplexing vähendab ühenduse ülekoormust. Regionaalsed origin-serverid Põhja-Euroopas (Frankfurt, Stockholm, Varssavi) on Eesti vaatajate jaoks parimad valikud.

FEC ja ARQ seaded

FEC lisab redundantseid pakette, mis võimaldavad kaotatud pakette taastada ilma uuesti saatmiseta. See lisab väikese bitivoo lisakoormuse, kuid hoiab latentsuse stabiilsena. SRT-i puhul seadista latency parameeter vastavalt võrgu RTT-le: tavaliselt 3–4 korda RTT väärtus.

Professionaalne nõuanne: Kui kasutad mobiilset ühendust, reserveeri alati 20–30% bitivoost FEC-ile. Eesti mobiilsidevõrk on hea, kuid suurüritustel, kus kõik kasutavad sama torni, võib pakettikadu ootamatult kasvada.


Kuidas mõõta latentsust täpselt?

Mõõtmine on koht, kus paljud teevad vea: nad usaldavad mängija statistikat, mis näitab ainult mängija poolset puhvrit, mitte tegelikku glass-to-glass latentsust.

Fotomeetod glass-to-glass mõõtmiseks

Kõige lihtsam ja täpsem meetod: pane üks seade näitama kella millisekunditäpsusega, suuna kaamera sellele, ja vaata teise seadme mängijast, kui suur on erinevus. Ei vaja mingit erivarustust.

Monitoring thresholds

MõõdikNormaalneHoiatusKriitilise
Glass-to-glass (interaktiivne)alla 500 ms100–500 ms6–30 s
Glass-to-glass (madal latentsus)1–3 s3–5 süle 5 s
Jitteralla 20 ms20–50 msüle 50 ms
Pakettikadualla 1%üle 1%üle 2%
Player buffer length1,5–3 s2–5 süle 5 s

Kui glass-to-glass ületab interaktiivse ürituse puhul 1 sekundi, kontrolli järjekorras: mängija puhver → CDN-i edge-asukoht → kodeerija GOP → võrgu pakettikadu. LiveAPI blogi kirjeldab mõõtmismeetodeid ja protokollide latentsuse vahemikke põhjalikult.


Kuidas Television töötab päriselus?

Oleme üle 10 aasta tootnud otseülekandeid konverentsidest, spordivõistlustest ja live shopping’ust. Selle ajaga oleme teinud piisavalt vigu, et teada täpselt, mida mitte teha. Siin on, mida me tegelikult kasutame.

Konverents (Q&A, interaktiivne):

  • Protokoll: LL-HLS platvormi poolel, SRT contribution-lingiks
  • Keyframe’i intervall: 1 sekund
  • Mängija puhver: 1,5–2 sekundit (stabiilsuse ja latentsuse kompromiss)
  • CDN: Põhja-Euroopa edge, Frankfurt või Stockholm

Spordivõistlus (suur vaatajaskond, kommentaar):

  • Protokoll: LL-HLS
  • Keyframe’i intervall: 2 sekundit
  • Mängija puhver: 2–3 sekundit
  • Bitivoog: 4–8 Mbps sõltuvalt liikumise intensiivsusest

Live shopping (reaalajas reaktsioon):

  • Protokoll: WebRTC SFU kuni 500 vaatajani, seejärel LL-HLS
  • Keyframe’i intervall: 1 sekund
  • TURN-serverid: alati planeeritud

Preflight checklist enne sündmust

  • Testi ingest-ühendust vähemalt 30 minutit enne algust
  • Planeeri alternatiivne ingest-punkt (backup RTMP URL)
  • Kontrolli energiavarustust: kas kohas on piisav võimsus? Kui mitte, tuleme oma generaatoriga. See on osa meie jätkusuutlikust tootmisfilosoofiast, kus planeerime energiakasutuse ette, mitte ei reageeri kriisile kohapeal.
  • Mõõda RTT ingest-serverini: peaks olema alla 50 ms Eestist Põhja-Euroopa serveriteni
  • Kontrolli pakettikadu: üle 1% nõuab FEC-i suurendamist
  • Testi mängijat kolmes erinevas võrgus (kaabel, WiFi, 4G)

„Latentsus on nagu ilm: sa ei saa seda täielikult kontrollida, aga saad selleks valmistuda. Meie preflight-protsess on see, mis eristab professionaalset ülekannet amatöörlikust — mitte varustus, vaid ettevalmistus. Ja kui striimer teab, kuidas publikuga suhelda, muutub isegi 3-sekundiline latentsus vaatajale peaaegu märkamatuks.“ — Television.ee otseülekande tootmine

Rando Mere kirjeldab live-ülekannet kui tehnikasporti: iga detail loeb, ja parimad tulemused tulevad ettevalmistusest, mitte improvisatsioonist.


Millal aktsepteerida suuremat latentsust?

Mitte iga üritus ei vaja WebRTC-d. Tegelikult on enamiku ürituste jaoks LL-HLS täiesti piisav, ja mõne jaoks sobib isegi traditsiooniline HLS paremini kui madala latentsusega lahendus.

Otsustamismaatriks

KasutusjuhtSoovituslik latentsusProtokollPõhjus
Live Q&A, oksjonalla 500 msWebRTCVaataja reaktsioon peab olema kohene
Spordivõistlus, kommentaar1–5 sLL-HLSSuur vaatajaskond, stabiilsus oluline
Konverents, webinar1–5 sLL-HLS / SRTMõõdukas interaktiivsus
Broadcast, festival6–30 sHLSMaksimaalne stabiilsus ja skaleeritavus
Contribution link (stuudiost serverisse)100–500 msSRTEbastabiilne võrk, vajab ARQ-d

Eesti võrgutingimuste eripärad

Eesti geograafilise väiksuse tõttu on latentsus kohalikes võrkudes väga madal. Põhja-Euroopa CDN-serveritega on suhteliselt madal RTT, mis on hea alustala madalaks latentsuseks. 5G levik kasvab, kuid suurüritustel tuleb arvestada, et kõik vaatajad kasutavad sama torni, mis võib tekitada jitter-probleeme.

Kohalike CDN-teenuste ja telekomioperaatorite kasutamine vähendab geograafilist latentsust, kuid nõuab hoolikat planeerimist: kas CDN toetab LL-HLS partial-segment mehhanismi? Kas HTTP/2 on lubatud? Need küsimused tasub enne sündmust läbi käia.

Skaleerimise soovitus: tee test-audit vähemalt nädal enne suurt sündmust. Mõõda glass-to-glass latentsust, jitter-i ja pakettikadu reaalsetes tingimustes. Ära usu ainult laboritulemusi.


Peamised järeldused

Õige protokollivalik, kodeerija seaded ja CDN-i asukoht koos mõõtmisega on neli sammast, millele iga madala latentsusega otseülekanne toetub.

PunktÜksikasjad
Protokollivalik on esimene sammWebRTC alla 500 ms, LL-HLS 2–5 s, traditsiooniline HLS 6–30 s.
Kodeerija seaded mõjutavad koheKeyframe’i intervall 1–2 s ja B-kaadrite keelamine vähendab latentsust ilma infrastruktuuri muutmata.
CDN-i edge-asukoht on kriitilinePõhja-Euroopa serverid (Frankfurt, Stockholm) annavad Eestist 20–40 ms RTT.
Mõõda glass-to-glass, mitte ainult puhvritFotomeetod kahe seadmega on lihtsaim ja täpseim viis tegeliku latentsuse kontrollimiseks.
Television pakub terviklahendustAudit, test, deploy ja tugi koos kohaliku energiavarustusega, kui infrastruktuur puudub.

Miks me Eestis tihti valime just need lahendused

Ausalt öeldes: me oleme teinud enamiku vigadest juba ise ära, nii et sina ei pea. Kümne aasta jooksul oleme õppinud, et Eesti kontekstis on mõned valikud lihtsalt mõistlikumad kui teised.

Servaarvutus ja regionaalsed origin-serverid Põhja-Euroopas ei ole ainult latentsuse küsimus. Need vähendavad ka andmeedastuse mahtu ja süsinikujälge, sest sisu ei pea reisima üle poole maailma. Me toodame oma elektrit, optimeerime logistikat ja kasutame isegi minimaalselt ühekordselt kasutatavat gaffer-teipi. Sama loogika kehtib infrastruktuuri valikutes: lähim server, mis töö ära teeb, on alati parem valik kui kaugem, võimsam, aga ressursimahukam alternatiiv.

Kliendi jaoks tähendab see vähem riske ja vähem üllatusi. Kui me ütleme, et latentsus on alla 3 sekundi, siis see on mõõdetud, mitte arvutatud. Ja kui midagi läheb valesti, oleme kohal, mitte teises ajavööndis.

Tehniline optimeerimine on oluline, aga see ei asenda head publikujuhtimist. Striimeri oskused ja publiku kaasamine muudavad isegi 3-sekundilise latentsuse vaatajale peaaegu märkamatuks, kui kommunikatsioon on sujuv ja striimer teab, kuidas vaatajaid hoida.


Television aitab sul latentsust professionaalselt lahendada

Latentsuse optimeerimine kõlab keeruliselt, aga see ei pea olema sinu probleem. Television on piisavalt suur, et hakkama saada, ja piisavalt väike, et hoolida sellest, et sinu süsteem töötaks aastaid muretult.

Television

Meie lähenemine on lihtne: audit → test → deploy → tugi. Alustame sellest, et mõõdame su praeguse glass-to-glass latentsuse ja leiame kitsaskohad. Seejärel soovitame protokolli, kodeerija seaded ja CDN-i konfiguratsiooni vastavalt su ürituse tüübile ja vaatajaskonnale. Kui sündmuskohas puudub infrastruktuur, tuleme oma energiavarustusega. Kui vajad striimimise platvormi, mis toetab LL-HLS partial-segment mehhanismi ja Põhja-Euroopa edge-servereid, on see meil olemas.

Konverentsid, spordivõistlused, live shopping, podcastid: oleme seda kõike teinud ja teame, kus asjad lähevad valesti. Võta ühendust ja teeme kiire tehniline audit, et sa teaksid täpselt, millega oled tegemas. Vaata meie otseülekande teenust ja kirjuta meile, mis su üritus on.


Autoriteetsed allikad edasiseks lugemiseks

Kui tahad süvitsi minna, on siin allikad, millele see artikkel toetub ja mis aitavad edasi uurida:

Standardid ja RFC-d:

Protokollide võrdlused ja praktikajuhendid:

Jaga artiklit