Einkastraum HLS-ið þitt hleðst fyrir þig, ekki áhorfendurna
Síðan hleðst því þjónninn þinn nær myndavélinni; vafrinn sækir samt spilunarlistann. Ákveddu hver sendir beiðnina og prófaðu svo keðjuna.
Þú prófar síðuna á fartölvunni, spilarinn byrjar og miðinn er lokaður. Áhorfandinn hinum megin opnar sömu síðu og fær snúningsmerki sem leysist aldrei. Venjulegu skýringin er að VPN-ið sé á þjóninum, svo spilunin eigi að virka — en það er vafrinn sem biður um spilunarlistann, og hann hefur sína eigin netleið. Síða sem er felld inn á þjón með einkaaðgangi lánar ekki þann aðgang til þess sem hleður henni.
Hér er um að ræða fyrirliggjandi ASP.NET síðu sem spilar HLS-upptök sem http://10.5.5.9:8080/live/stream.m3u8, sem er skýringardæmi um einkaaðsetur. Tvö fyrirkomulög virka; annað þeirra er líklega ekki það sem þú byggðir.
Goðsögn: síða sem hleðst sannar miðlunarleiðina
HTML þeirrar síðu kemur frá vefþjóninum þínum, eftir þeirri leið sem vefþjónninn þinn hefur. Spilunarlistinn og bútarnir koma frá miðlunargjafanum, eftir þeirri leið sem hluturinn sem sendir beiðnina hefur. Þegar spilarinn keyrir í vafra áhorfandans eru þetta tveir mismunandi biðlarar, tvö mismunandi upprunaaðsetur og oft tvö mismunandi bilunarlén. Að sjá þann fyrri heppnast segir ekkert um þann seinni.
Það sem prófið þitt sannaði í raun er þrengra en það virtist: vélin þín nær bæði opinberu síðunni og einka miðlunarþjóninum á sama tíma. Vél áhorfandans var aldrei hluti tilraunarinnar.
Hvað spilunarlistinn biður um næst
RFC 8216 aðskilur miðlunarlista, sem telja upp búta, frá aðallistum, sem telja upp aðra lista, og leysir afstæð URI gagnvart URI listans sem inniheldur þau. Þessi regla er það sem fólk sleppir. Að sækja eina .m3u8 skrá með góðum árangri er ekki spilunarpróf, því skráin sem þú sóttir er atriðaskrá, ekki miðlunin.
Fylgdu keðjunni eins og spilarinn gerir: opnaðu valinn lista, biddu svo um auðlindirnar sem hann nefnir og fylgdu svo hvaða endurbeiningu sem er. Listi sem er bornn fram í gegnum aðgengilegan vefþjón getur samt beint áhorfandanum að óaðgengilegu einkaaðsetri. Á sama hátt breytir það grunninum sem færslur hans leysast gagnvart að flytja afstæðan lista á annað URL, og þess vegna framleiðir endurskrifun fyrsta sýnilega URL og stöðvun þar yfirleitt lista sem lítur gilt út en er óspilanlegur.
Beint áhorf: áhorfandinn þarf leiðina
Ef áhorfendur eiga að ná beint til miðlunarþjónsins þurfa tækin þeirra samþykkt VPN eða aðra einkaleið, DNS sem leysir nöfnin sem þú notaðir í raun, leyfi til að ná þeim áfangastöðum og hvaða auðkenningu sem miðlunarþjónustan krefst. Athugaðu hvert atriði á tæki áhorfandans en ekki á þjóninum. Vafri í síma þar sem VPN-sniðið er uppsett en ekki tengt er algeng og fullkomlega endurtakanleg bilun.
Þetta fyrirkomulag heldur upprunanum einkanum og ýtir aðgangskröfunni yfir á áhorfendurna. Það er stefnumótandi ákvörðun jafnt sem tæknileg, svo staðfestu að hverjum fyrirhuguðum áhorfanda sé heimilt að hafa þessa leið áður en þú hannar út frá henni.
Afhending frá þjóninum: einn stýrður inngangsstaður
Kosturinn er heimilaður miðlunarframendi sem sækir upprunann eftir sinni einkaleið og birtir aftur aðeins þær auðlindir sem áhorfandinn sér. Haltu spilunarlistanum, bútunum og hvaða lyklisauðlindum sem er í samræmi við þennan eina inngangsstað, annars sækir spilarinn endurskrifaðan lista í gegnum framendann og bútana beint frá aðsetri sem áhorfandinn nær ekki.
Takmarkaðu upprunann og leyfðu leiðirnar í þeim framenda. Handahófskennt URL frá notanda breytir gagnlegri milliþjónustu í ótakmarkaðan sækjanda innra netkerfisins þíns, sem er mun verri vandi en straumur sem spilast ekki. Settu upprunann og leiðarforskeytið á lista yfir leyfðar auðlindir í stað þess að staðfesta strenginn eftir á.
Fyrir fyrirliggjandi HLS-uppruna skaltu fyrst athuga hvort stýrð framsending dugi; VPN í miðjunni þýðir ekki að umkóðun sé nauðsynleg. Staðfestu svo raunverulega samsetningu vafra og kóða, því aðgengilegt svar og studd snið eru tvö aðskilin skilyrði. Haltu TLS, auðkenningu og vafraöryggiskröfum upprunans ósnortnum — innfellt spilari er ekki undanþága frá þeim.
Prófaðu keðjuna, ekki URL-ið
Keyrðu prófin frá þeim hlut sem mun í raun senda hverja beiðni, og meðhöndlaðu hvert skref sem sitt eigið niðurstöðu:
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.tsEndurtaktu það svo í vafra áhorfandans sjálfs með fyrirhugaða straumnum, ekki prófunarmynstri af skrifborðinu þínu. Hleðsla síðu, hleðsla lista, bútasókn og bilun í heimild eru fjórar aðskildar niðurstöður, og þú vilt hafa séð allar fjórar áður en þú kallar þetta lagað. Ekki setja upp úrelt vafraviðbót vegna þess að gamalt dæmi spilaði einn straum þannig; hluti sem vantar er yfirleitt leið áhorfandans eða óundirritað URL bútsins.
Þegar fyrirkomulagið er viljandi skaltu skrifa það á eina línu: hver sækir miðlunina, eftir hvaða leið og hvað áhorfandanum er heimilt að biðja um. Sú setning útkljáir flestar framtíðar deilur um hverjum straumnum er í raun ætlaður.