Ваш приватни HLS ток се учитава за вас, а не за ваше гледаоце
Страница се учитава јер ваш сервер може да дође до камере; прегледач ипак дохвата плејлисту. Одлучите ко шаље захтев и затим проверите ланац.
Тестирате страницу на преносном рачунару, плејер се покрене и тикет се затвори. Гледалац на другој страни отвори исту страницу и добије спинер који се никада не разреши. Уобичајено објашњење је да је VPN на серверу, па би репродукција требало да ради — али прегледач је компонента која тражи плејлисту и има сопствену мрежну путању. Страница уграђена на сервер са приватним приступом не позајмљује тај приступ ономе ко је учита.
Реч је о постојећој ASP.NET страници која репродукује HLS извор као што је http://10.5.5.9:8080/live/stream.m3u8, што је илустративна приватна адреса. Раде два распореда; један од њих вероватно није онај који сте направили.
Мит: учитана страница доказује медијску путању
HTML те странице долази са вашег веб сервера, којим год путем ваш веб сервер располаже. Плејлиста и сегменти долазе са медијског извора, којим год путем располаже компонента која шаље захтев. Када плејер ради у прегледачу гледаоца, то су два различита клијента, две различите изворне адресе и често два различита домена квара. То што први успе не говори ништа о другом.
Оно што је ваш тест заправо доказао уже је него што је изгледало: ваша машина може истовремено да дође до јавне странице и до приватног медијског хоста. Машина гледаоца никада није била део експеримента.
Шта плејлиста тражи даље
RFC 8216 раздваја медијске плејлисте, које наводе сегменте, од главних плејлиста, које наводе друге плејлисте, и разрешава релативне URI према URI-ју плејлисте која их садржи. То правило је део који људи прескачу. Успешно дохватање једног .m3u8 фајла није тест репродукције, јер је дохваћени фајл индекс, а не медиј.
Пратите ланац онако како то чини плејер: отворите изабрану плејлисту, затим затражите ресурсе које она наводи, затим пратите свако преусмеравање. Плејлиста послужена преко доступног веб сервера и даље може да усмери гледаоца на недоступну приватну адресу. Исто тако, премештање релативне плејлисте на други URL мења основу према којој се разрешавају њени уноси, и зато преписивање првог видљивог URL-а и заустављање на томе обично даје плејлисту која изгледа исправно, али не може да се репродукује.
Директно гледање: гледаоцу треба путања
Ако гледаоци треба директно да достигну медијски хост, њихови уређаји требају одобрени VPN или другу приватну путању, DNS који разрешава имена која сте стварно користили, дозволу да достигну те дестинације и било коју аутентикацију коју медијска услуга захтева. Проверите сваку ставку на уређају гледаоца, а не на серверу. Прегледач на телефону са инсталираним, али неповезаним VPN профилом је чест и потпуно поновљив квар.
Овај распоред чува извор приватним и пребацује захтев за приступом на публику. То је политичка одлука колико и техничка, па потврдите да сваки предвиђени гледалац сме да држи ту путању пре него што дизајнирате око ње.
Испорука са стране сервера: једна контролисана улазна тачка
Алтернатива је овлашћени медијски фронтенд који дохвата извор преко своје приватне путање и поново објављује само ресурсе окренуте гледаоцу. Држите плејлисту, сегменте и све кључне ресурсе усклађене са том једном улазном тачком, иначе ће плејер дохватити преписану плејлисту преко фронтенда, а сегменте директно са адресе до које гледалац не може да дође.
Ограничите извор и дозвољене путање на том фронтенду. Произвољни URL који корисник достави претвара користан прокси у неограниченог дохватача ваше интерне мреже, што је много гори проблем од тока који се неће репродуковати. Ставите извор и префикс путање на белу листу уместо да низ проверавате накнадно.
За постојећи HLS извор прво проверите да ли је контролисано прослеђивање довољно; VPN у средини не значи да је потребно транскодирање. Затим проверите стварну комбинацију прегледача и кодека, јер су доступан одговор и подржани формат одвојени услови. Сачувајте TLS, аутентикацију и безбедносне захтеве прегледача нетакнутима — уграђени плејер није изузет од њих.
Тестирајте ланац, а не URL
Изводите провере из компоненте која ће стварно слати сваки захтев и третирајте сваки корак као засебан резултат:
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Затим то поновите у гледаочевом сопственом прегледачу са предвиђеним током, а не са тестним узорком са свог стола. Учитавање странице, учитавање плејлисте, дохватање сегмента и неуспех ауторизације су четири различита исхода, и желите да видите сва четири пре него што то прогласите поправљеним. Не инсталирајте застарели додатак прегледача зато што је стари пример тако репродуковао један ток; део који недостаје обично је гледаочева путања или непотписани URL сегмента.
Када распоред постане намеран, запишите га у једном реду: ко дохвата медиј, којом путањом и шта гледалац сме да тражи. Та реченица решава већину будућих расправа о томе за кога је ток стварно намењен.