Sizning shaxsiy HLS oqimingiz tomoshabinlaringiz uchun emas, o'zingiz uchun yuklanadi
Sahifa yuklanadi, chunki serveringiz kameraga yetib boradi; brauzer baribir pleylistni oladi. So'rovni kim yuborishini hal qiling, keyin zanjirni sinab ko'ring.
Siz sahifani noutbukda sinab ko'rasiz, pleyer ishga tushadi va chipta yopiladi. Narigi tomondagi tomoshabin o'sha sahifani ochadi va hech qachon tugamaydigan aylanuvchi belgini oladi. Odatiy izoh VPN serverda turibdi, shuning uchun ijro ishlashi kerak deyiladi — lekin pleylistni so'raydigan komponent aynan brauzer, va uning o'z tarmoq yo'li bor. Xususiy kirishga ega serverga joylashtirilgan sahifa bu kirishni uni yuklaydigan hech kimga qarzga bermaydi.
Gap HLS manbasini, masalan http://10.5.5.9:8080/live/stream.m3u8 ni ijro etadigan mavjud ASP.NET sahifasi haqida; bu — illyustrativ xususiy manzil. Ikki tartib ishlaydi; ulardan biri, ehtimol, siz qurgan narsa emas.
Afsona: yuklangan sahifa media yo'lini isbotlaydi
O'sha sahifaning HTML'i sizning veb-serveringizdan, veb-serveringiz qanday marshrutga ega bo'lsa, o'sha orqali keladi. Pleylist va segmentlar media manbasidan, so'rov yuboruvchi komponent qanday marshrutga ega bo'lsa, o'sha orqali keladi. Pleyer tomoshabinning brauzerida ishlaganda, bu ikki xil mijoz, ikki xil manba manzili va ko'pincha ikki xil nosozlik domenidir. Birinchisining muvaffaqiyatli bo'lganini ko'rish ikkinchisi haqida hech narsa demaydi.
Sizning sinovingiz aslida isbotlagan narsa ko'ringanidan ancha tor: sizning mashinangiz bir vaqtda ham ommaviy sahifaga, ham xususiy media xostiga yetib boradi. Tomoshabinning mashinasi hech qachon tajribaning bir qismi bo'lmagan.
Pleylist keyin nima talab qiladi
RFC 8216 segmentlarni sanaydigan media pleylistlarini boshqa pleylistlarni sanaydigan master pleylistlardan ajratadi va nisbiy URI'larni ularni o'z ichiga olgan pleylistning URI'siga nisbatan hal qiladi. Odamlar o'tkazib yuboradigan qism aynan shu qoida. Bitta .m3u8 faylni muvaffaqiyatli olish ijro sinovi emas, chunki olingan fayl indeks, media emas.
Zanjirni pleyer qilgandek kuzatib boring: tanlangan pleylistni oching, keyin u nomlagan resurslarni so'rang, keyin har qanday qayta yo'naltirishni kuzatib boring. Qulay veb-server orqali berilgan pleylist ham tomoshabinni yetib bo'lmaydigan xususiy manzilga yuborishi mumkin. Xuddi shunday, nisbiy pleylistni boshqa URL ga ko'chirish uning yozuvlari hal qilinadigan asosni o'zgartiradi, shuning uchun birinchi ko'rinadigan URL ni qayta yozib, shu joyda to'xtash odatda to'g'ri ko'rinadigan, lekin ijro etilmaydigan pleylist hosil qiladi.
To'g'ridan-to'g'ri ko'rish: tomoshabinga yo'l kerak
Agar tomoshabinlar media xostiga to'g'ridan-to'g'ri yetib borishi kerak bo'lsa, ularning qurilmalariga tasdiqlangan VPN yoki boshqa xususiy yo'l, siz haqiqatda ishlatgan nomlarni hal qiladigan DNS, o'sha manzillarga yetib borish ruxsati va media xizmati talab qiladigan har qanday autentifikatsiya kerak. Har birini serverda emas, tomoshabinning qurilmasida tekshiring. VPN profili o'rnatilgan, lekin ulanmagan telefondagi brauzer keng tarqalgan va to'liq takrorlanadigan nosozlik.
Bu tartib manbani xususiy saqlaydi va kirish talabini tomoshabinlarga yuklaydi. Bu texnik bo'lgani kabi siyosiy qaror ham, shuning uchun uning atrofida loyihalashdan oldin har bir mo'ljallangan tomoshabinga bu yo'lni saqlashga ruxsat borligini tasdiqlang.
Server tomondan yetkazish: bitta nazorat qilinadigan kirish nuqtasi
Muqobil — manbani o'zining xususiy yo'li orqali olib keladigan va faqat tomoshabinga qaragan resurslarni qayta e'lon qiladigan vakolatli media frontendi. Pleylistni, segmentlarni va har qanday kalit resurslarni shu yagona kirish nuqtasi bilan mos holda tuting, aks holda pleyer qayta yozilgan pleylistni frontend orqali, segmentlarni esa tomoshabin yetib borolmaydigan manzildan to'g'ridan-to'g'ri oladi.
Shu frontendda manbani va ruxsat etilgan yo'llarni cheklang. Foydalanuvchi bergan ixtiyoriy URL foydali proksini ichki tarmog'ingizning cheklanmagan olib keluvchisiga aylantiradi, bu esa ijro etilmaydigan oqimdan ancha yomonroq muammo. Satrni keyin tekshirish o'rniga manba va yo'l prefiksini ruxsat etilganlar ro'yxatiga kiriting.
Mavjud HLS manbasi uchun avval nazorat qilinadigan uzatish yetarlimi-yo'qligini tekshiring; o'rtada VPN bo'lishi transkodlash zarurligini bildirmaydi. Keyin haqiqiy brauzer va kodek birikmasini tekshiring, chunki qulay javob va qo'llab-quvvatlanadigan format ikki alohida shart. Manbaning TLS, autentifikatsiya va brauzer xavfsizligi talablarini daxlsiz saqlang — joylashtirilgan pleyer ulardan ozod emas.
URL ni emas, zanjirni sinang
Tekshiruvlarni har bir so'rovni haqiqatan yuboradigan komponentdan o'tkazing va har bir qadamni o'z natijasi deb qarang:
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.tsKeyin buni tomoshabinning o'z brauzerida mo'ljallangan oqim bilan takrorlang, stolingizdagi sinov namunasini bilan emas. Sahifaning yuklanishi, pleylistning yuklanishi, segmentni olish va avtorizatsiya muvaffaqiyatsizligi — to'rt xil natija, va tuzatilgan deb aytishdan oldin to'rttasini ham ko'rgan bo'lishni xohlaysiz. Eski misol bitta oqimni shunday ijro etgani uchun eskirgan brauzer plaginini o'rnatmang; yetishmayotgan qism odatda tomoshabinning yo'li yoki imzolanmagan segment URL'i.
Tartib ongli tanlangandan so'ng, uni bir satrda yozib qo'ying: mediani kim olib keladi, qaysi yo'l bilan va tomoshabinga nima so'rashga ruxsat. O'sha gap oqim aslida kim uchun ekani haqidagi kelgusi bahslarning ko'pini hal qiladi.