Səhifəni noutbukda sınayırsınız, oynadıcı başlayır və bilet bağlanır. Digər tərəfdəki izləyici həmin səhifəni açır və heç vaxt bitməyən fırlanan göstərici ilə qarşılaşır. Adətən verilən izah odur ki, VPN serverdədir, ona görə oxutma işləməlidir — lakin çalğı siyahısını istəyən komponent brauzerdir və onun öz şəbəkə yolu var. Şəxsi girişi olan serverə yerləşdirilmiş səhifə həmin girişi onu yükləyən hər kəsə vermir.

Söhbət HLS mənbəyini, məsələn http://10.5.5.9:8080/live/stream.m3u8 ünvanını oxudan mövcud ASP.NET səhifəsindən gedir; bu, illüstrativ şəxsi ünvandır. İki düzülüş işləyir; onlardan biri çox güman ki, sizin qurduğunuz deyil.

Mif: yüklənən səhifə media yolunu sübut edir

Həmin səhifənin HTML-i sizin veb serverinizdən gəlir, veb serverinizin hansı marşrutu varsa, onunla. Çalğı siyahısı və seqmentlər isə media mənbəyindən gəlir, sorğu göndərən komponentin hansı marşrutu varsa, onunla. Oynadıcı izləyicinin brauzerində işləyəndə bunlar iki fərqli müştəri, iki fərqli mənbə ünvanı və çox vaxt iki fərqli nasazlıq sahəsidir. Birincinin uğur qazanmasını görmək ikinci barədə heç nə demir.

Sınağınızın həqiqətən sübut etdiyi şey göründüyündən daha dardır: sizin maşınınız həm açıq səhifəyə, həm də şəxsi media hostuna eyni vaxtda çata bilir. İzləyicinin maşını heç vaxt təcrübənin bir hissəsi olmayıb.

Çalğı siyahısı bundan sonra nə istəyir

RFC 8216 seqmentləri sadalayan media çalğı siyahılarını digər çalğı siyahılarını sadalayan master çalğı siyahılarından ayırır və nisbi URI-ləri onları ehtiva edən çalğı siyahısının URI-si ilə həll edir. İnsanların atladığı hissə məhz bu qaydadır. Bir .m3u8 faylını uğurla gətirmək oxutma sınağı deyil, çünki gətirdiyiniz fayl indeksdir, media deyil.

Zənciri oynadıcının etdiyi kimi izləyin: seçilmiş çalğı siyahısını açın, sonra onun adlandırdığı resursları istəyin, sonra hər hansı yönləndirməni izləyin. Əlçatan veb server vasitəsilə verilən çalğı siyahısı yenə də izləyicini əlçatmaz şəxsi ünvana yönəldə bilər. Eyni şəkildə, nisbi çalğı siyahısını başqa URL-ə köçürmək onun qeydlərinin həll olunduğu bazanı dəyişir; buna görə də ilk görünən URL-i yenidən yazıb orada dayanmaq adətən oxuda bilməyən, amma düzgün görünən çalğı siyahısı yaradır.

Birbaşa baxış: izləyiciyə yol lazımdır

İzləyicilər media hostuna birbaşa çatmalıdırsa, onların cihazlarına təsdiqlənmiş VPN və ya başqa şəxsi yol, həqiqətən istifadə etdiyiniz adları həll edən DNS, həmin hədəflərə çatmaq üçün icazə və media xidmətinin tələb etdiyi autentifikasiya lazımdır. Hər birini serverdə deyil, izləyicinin cihazında yoxlayın. VPN profili quraşdırılmış, lakin qoşulmamış telefonun brauzeri tez-tez rast gəlinən və tam təkrarlana bilən nasazlıqdır.

Bu düzülüş mənbəyi şəxsi saxlayır və giriş tələbini auditoriyaya keçirir. Bu, texniki olduğu qədər də siyasət qərarıdır, ona görə də onun ətrafında dizayn etməzdən əvvəl hər nəzərdə tutulan izləyicinin həmin yolu saxlamağa icazəsi olduğunu təsdiqləyin.

Server tərəfdən çatdırılma: bir nəzarətli giriş nöqtəsi

Alternativ, mənbəyi öz şəxsi yolu ilə gətirən və yalnız izləyiciyə baxan resursları yenidən yayımlayan səlahiyyətli media ön hissəsidir. Çalğı siyahısını, seqmentləri və hər hansı açar resurslarını həmin tək giriş nöqtəsi ilə uyğun saxlayın, əks halda oynadıcı çalğı siyahısını ön hissə vasitəsilə, seqmentləri isə birbaşa izləyicinin çata bilmədiyi ünvandan gətirəcək.

Mənbəyi və icazə verilən yolları həmin ön hissədə məhdudlaşdırın. İstifadəçinin təqdim etdiyi ixtiyari URL faydalı proksini daxili şəbəkənizin məhdudiyyətsiz gətiricisinə çevirir ki, bu da oxumayan axından qat-qat pis problemdir. Sətri sonradan yoxlamaq əvəzinə mənbəyi və yol prefiksini icazəli siyahısına salın.

Mövcud HLS mənbəyi üçün əvvəlcə nəzarətli yönləndirmənin kifayət edib-etmədiyini yoxlayın; ortada VPN olması transkodlaşdırmanın tələb olunduğunu ifadə etmir. Sonra faktiki brauzer və kodek kombinasiyasını yoxlayın, çünki əlçatan cavab və dəstəklənən format ayrı-ayrı şərtlərdir. Mənbənin TLS, autentifikasiya və brauzer təhlükəsizliyi tələblərini toxunulmaz saxlayın — quraşdırılmış oynadıcı onlardan azad deyil.

URL-i deyil, zənciri sınaqdan keçirin

Yoxlamaları hər sorğunu həqiqətən göndərəcək komponentdən aparın və hər addımı öz nəticəsi kimi qəbul edin:

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

Sonra bunu izləyicinin öz brauzerində nəzərdə tutulan axınla təkrarlayın, masanızdakı sınaq nümunəsi ilə deyil. Səhifənin yüklənməsi, çalğı siyahısının yüklənməsi, seqmentin alınması və avtorizasiya uğursuzluğu dörd ayrı nəticədir və düzəldildi deməzdən əvvəl dördünün də müşahidə olunmasını istəyirsiniz. Köhnə nümunə bir axını belə oxuduğu üçün köhnə brauzer plagini quraşdırmayın; çatışmayan hissə adətən izləyicinin yolu və ya imzalanmamış seqment URL-idir.

Düzülüş qəsdən seçilmiş olduqdan sonra onu bir sətirdə yazın: medianı kim gətirir, hansı yolla və izləyiciyə nə istəməyə icazə verilir. Bu cümlə axının həqiqətən kim üçün olduğuna dair gələcək mübahisələrin çoxunu həll edir.

Əlaqəli məqalələr