Testirate stranicu na prijenosniku, player se pokrene i tiket se zatvori. Gledalac na drugoj strani otvori istu stranicu i dobije spinner koji se nikada ne razriješi. Uobičajeno objašnjenje je da je VPN na poslužitelju, pa bi reprodukcija trebala raditi — ali preglednik je komponenta koja traži popis za reprodukciju i ima vlastitu mrežnu putanju. Stranica ugrađena na poslužitelj s privatnim pristupom ne posuđuje taj pristup onome ko je učita.

Riječ je o postojećoj ASP.NET stranici koja reprodukuje HLS izvor kao što je http://10.5.5.9:8080/live/stream.m3u8, što je ilustrativna privatna adresa. Rade dva rasporeda; jedan od njih vjerojatno nije onaj koji ste napravili.

Mit: učitana stranica dokazuje medijsku putanju

HTML te stranice dolazi s vašeg web poslužitelja, kojim god putem vaš web poslužitelj raspolaže. Popis za reprodukciju i segmenti dolaze s medijskog izvora, kojim god putem raspolaže komponenta koja šalje zahtjev. Kada player radi u pregledniku gledaoca, to su dva različita klijenta, dvije različite izvorne adrese i često dvije različite domene kvara. To što prvi uspije ne govori ništa o drugom.

Ono što je vaš test zapravo dokazao uže je nego što je izgledalo: vaše računalo može istovremeno doći do javne stranice i do privatnog medijskog hosta. Računalo gledaoca nikada nije bilo dio eksperimenta.

Šta popis za reprodukciju traži dalje

RFC 8216 razdvaja medijske popise za reprodukciju, koji navode segmente, od glavnih popisa za reprodukciju, koji navode druge popise, i razrješava relativne URI-je prema URI-ju popisa koji ih sadrži. To pravilo je dio koji ljudi preskaču. Uspješno dohvaćanje jednog .m3u8 fajla nije test reprodukcije, jer je dohvaćeni fajl indeks, a ne medij.

Pratite lanac onako kako to čini player: otvorite odabrani popis, zatim zatražite resurse koje navodi, zatim slijedite svako preusmjeravanje. Popis poslužen preko dostupnog web poslužitelja ipak može usmjeriti gledaoca na nedostupnu privatnu adresu. Jednako tako, premještanje relativnog popisa na drugi URL mijenja osnovu prema kojoj se razrješavaju njegovi unosi, i zato prepisivanje prvog vidljivog URL-a i zaustavljanje na tome obično daje popis koji izgleda ispravno, ali se ne može reproducirati.

Direktno gledanje: gledaocu treba putanja

Ako gledaoci treba da dosegnu medijski host direktno, njihovi uređaji trebaju odobreni VPN ili drugu privatnu putanju, DNS koji razrješava imena koja ste stvarno koristili, dozvolu za dosezanje tih odredišta i bilo koju autentikaciju koju medijska usluga zahtijeva. Provjerite svaku stavku na uređaju gledaoca, a ne na poslužitelju. Preglednik na telefonu s instaliranim ali nepovezanim VPN profilom čest je i potpuno ponovljiv kvar.

Ovaj raspored čuva izvor privatnim i prebacuje zahtjev za pristupom na publiku. To je politička odluka koliko i tehnička, pa potvrdite da svaki predviđeni gledalac smije držati tu putanju prije nego što dizajnirate oko nje.

Isporuka sa strane poslužitelja: jedna kontrolirana ulazna točka

Alternativa je ovlašteni medijski frontend koji dohvaća izvor preko svoje privatne putanje i ponovno objavljuje samo resurse okrenute gledaocu. Držite popis, segmente i sve ključne resurse usklađene s tom jednom ulaznom točkom, inače će player dohvatiti prepisani popis preko frontenda, a segmente direktno s adrese do koje gledalac ne može doći.

Ograničite izvor i dozvoljene putanje na tom frontendu. Proizvoljni URL koji dostavi korisnik pretvara korisni proxy u neograničeni dohvaćač vaše interne mreže, što je mnogo gori problem od toka koji se neće reproducirati. Stavite izvor i prefiks putanje na bijelu listu umjesto da niz provjeravate naknadno.

Za postojeći HLS izvor prvo provjerite je li kontrolirano prosljeđivanje dovoljno; VPN u sredini ne znači da je potrebno transkodiranje. Zatim provjerite stvarnu kombinaciju preglednika i kodeka, jer su dostupan odgovor i podržani format odvojeni uvjeti. Sačuvajte TLS, autentikaciju i sigurnosne zahtjeve preglednika netaknutima — ugrađeni player nije izuzet od njih.

Testirajte lanac, a ne URL

Izvodite provjere iz komponente koja će stvarno slati svaki zahtjev i tretirajte svaki korak kao zaseban rezultat:

curl -s http://10.5.5.9:8080/live/stream.m3u8
curl -s -o /dev/null -w '%{http_code}\n' http://10.5.5.9:8080/live/segment-000123.ts

Zatim to ponovite u gledaočevu vlastitom pregledniku s predviđenim tokom, a ne s testnim uzorkom sa svog stola. Učitavanje stranice, učitavanje popisa, dohvaćanje segmenta i neuspjeh autorizacije četiri su različita ishoda, i želite da vidite sva četiri prije nego što to proglasite popravljenim. Ne instalirajte zastarjeli dodatak preglednika zato što je stari primjer tako reproducirao jedan tok; dio koji nedostaje obično je gledaočeva putanja ili nepotpisani URL segmenta.

Kada raspored postane namjeran, zapišite ga u jednom redu: ko dohvaća medij, kojom putanjom i šta gledalac smije tražiti. Ta rečenica rješava većinu budućih rasprava o tome za koga je tok stvarno namijenjen.

Povezani članci