Kamera axını dərc etmək: RTSP və HLS eyni kənar deyil
RTSP sessiya idarəetməsi və HLS çatdırılması fərqli ictimai kənarlar tələb edir, hər ikisi VPN vasitəsilə eyni kameraya çatsa da. Əvvəlcə izləyici modelini seçin.
Bir kamera portu açırsınız, ona bir pleyer yönləndirirsiniz və internet probleminin həll olunduğunu güman edirsiniz. Sonra telefon onu oxuda bilmir, brauzer onu oxuda bilmir və kameranın idarəetmə səhifəsi ictimai kənardan cəmi bir səhv yazılmış yol uzaqlıqda durur. Seçdiyiniz çatdırılma modeli, RTSP və ya HLS, hər hansı firewall qaydası yazılmazdan əvvəl bunun çoxuna qərar verir. VPN yalnız şəxsi hissəni təmin edir.
VPN mənbə yolunu düzəldir, izləyici yolunu yox
Tunel vasitəsilə kameranın LAN şəbəkəsinə qoşulmuş VPS kameraya onun şəxsi ünvanı ilə çata bilər və bu, həqiqətən faydalıdır. Bu o deməkdir ki, kameranın öz giriş portuna ehtiyacı yoxdur və ev marşrutlaşdırıcısı bağlı qalır. Bu sizə izləyicinin hansı dildə danışacağını demir. Masaüstü pleyer, brauzer, telefon və ağıllı televizor fərqli protokolları dəstəkləyir və hər birinin TLS, autentifikasiya və kodeklərə dair öz gözləntiləri var.
Budur atmağa dəyər fərziyyə: dərc etmək mənbəni əlçatan etmək deməkdir. Dərc etmək əslində müəyyən auditoriyaya medianı istehlak etməyin dəstəklənən yolunu vermək deməkdir. Dərc edilmiş axının formatı, auditoriyası və etimadnaməsi var; əlçatan kameranın heç biri yoxdur. Əlçatanlıq tunelin həll etdiyi hissədir, izləyicinin giriş nöqtəsi isə hələ dizayn etməli olduğunuz hissədir.
RTSP danışıqdır, tək port deyil
RTSP sessiya idarəetməsini daşıyır: klient təsvir istəyir, bir və ya bir neçə media izi qurur və sonra oxudur. Medianın özünün ötürülməsi həmin qurulum zamanı razılaşdırılır, buna görə protokolu tək yönləndirilmiş TCP portu ilə yaxşı təsvir etmək mümkün deyil. Bu danışıq insanların firewall qaydalarını müqayisə edərkən qaçırdığı hissədir.
Son nöqtələrdən asılı olaraq RTP ayrı UDP portlarında gələ bilər və ya idarəetmə bağlantısına hörülə bilər. Yalnız 554-ü yönləndirən və qalanın işləyəcəyini güman edən relay adətən qoşulan, bir iz bildirən və sonra heç nə göstərməyən sessiya yaradır. Qaydaları yazmazdan əvvəl kameranızın həqiqətən hansı ötürməni razılaşdırdığını yoxlayın. Şəxsi tərəfdə qeyd bunu bir dəqiqədə cavablandırır və təxmin etmək bir axşama başa gəlir.
Uyğun pleyerləri olan kiçik, tanınmış auditoriya üçün qəsdən konfiqurasiya edilmiş RTSP relay düzgün cavab ola bilər. Onun hansı mənbədən çəkə biləcəyini məhdudlaşdırın və relaydə autentifikasiya tələb edin. Test etdiyiniz pleyerləri yazın, çünki VLC-də işləyən RTSP axını brauzerdə yenə də uğursuz ola bilər.
HLS pleylist üstəgəl resurslardır
HLS izləyicisi pleylist alır, sonra həmin pleylistin adlandırdığı media seqmentlərini alır. HLS spesifikasiyası bu resurs modelini müəyyən edir və mühüm əməliyyat detalı ondadır ki, pleylistlər başqa URL-lərə istinad edir. Nisbi istinadlar pleylistin yerinə görə həll olunur, buna görə yolları yenidən yazan proxy onları ardıcıl şəkildə yenidən yazmalıdır.
Əgər kamera artıq istifadəyə yararlı HLS təqdim edirsə, ictimai frontend həmin pleylist və seqment sorğularını tuneldən keçirə bilər. Tətbiqin yaratdığı açarlara, yönləndirmələrə və URL-lərə diqqət yetirin. Şəxsi hosta işarə edən hər mütləq URL, LAN-dan kənarda olan izləyici onu izlədiyi anda pozulur. Nisbi yollar proxy yenidən yazmasından sağ çıxan yollardır, buna görə yaradılan çıxışa nəzarət etdiyiniz hər yerdə onlara üstünlük verin.
Əgər kamera yalnız RTSP danışırsa, nə isə mənbəyi izləyici formatına çevirməlidir. Yenidən paketləmə və transkodlaşdırma fərqli işlərdir: yenidən paketləmə kodeki saxlayır, transkodlaşdırma isə uyğunluq üçün onu yenidən kodlaşdırır və yalnız ikincisi ciddi CPU tələb edir. Heç biri sadəcə yolda VPN olduğu üçün zəruri olmur.
Yükləmə xəttini paylanmanın baş verdiyi yerə görə planlaşdırın. İctimai media xidmətini qidalandıran tək şəxsi qəbul, öz axınını tuneldən çəkən hər izləyicidən tamamilə fərqli davranır. İkinci model adətən doymuş ev bağlantısı və təsadüfən uğursuz görünən kamera ilə bitir.
Autentifikasiyanı dərc etdiyiniz kənara qoyun
TLS, izləyici autentifikasiyası və giriş jurnallaşdırması ictimai giriş nöqtəsinə aiddir, kameraya yox. Bu, kameranın etimadnamələrini axının etimadnamələrindən ayrı saxlayır. Bu həm də auditoriya üzvü getdikdə girişi ləğv etmək üçün bir yer verir. Bu nəzarətləri kameraya qoymaq isə hər auditoriya dəyişikliyinin heç vaxt ictimai əlçatan olmamalı olan bir cihazda inzibati dəyişikliyə çevrilməsi deməkdir.
VPN-i və kameranın idarəetmə icazələrini dərc yolundan ayrı saxlayın. Axın çəkmək üçün kameranın veb interfeysinə çata bilən VPS həmin interfeysi açan maşın da olmamalıdır. Auditoriya kameranın ünvanını heç vaxt bilməməlidir.
Sonra zəncirin işlədiyini güman etmək əvəzinə həqiqətən qurduğunuz iki ucu yoxlayın:
$ ffprobe -v error -rtsp_transport tcp rtsp://10.50.0.9:554/stream1
$ curl -sI https://stream.example.net/live/index.m3u8
HTTP/2 200
content-type: application/vnd.apple.mpegurl
Şəxsi mənbənin uğurlu yoxlanması və ictimai kənarda pleylistin uğurlu alınması dizaynın fərqli yarılarını sübut edir. Onları ayrıca test edin. Auditoriyanızın istifadə etdiyi eyni növ klientdən oxutma bütün zənciri əhatə edən yeganə testdir.
Sonunda hər halqasında bir məqsəd olan zəncir əldə edirsiniz: şəxsi mənbə, məhdud qəbul, seçilmiş paketləmə, səlahiyyətli izləyici girişi. Bu halqaların heç biri istəyə bağlı deyil və heç biri port açmaqla yaranmır.