Камера ағынын жариялау: RTSP мен HLS бір шет емес
RTSP сессиясын басқару және HLS жеткізу әртүрлі қоғамдық шеттерді қажет етеді, тіпті екеуі де VPN арқылы бір камераға жетсе де. Алдымен көрермен моделін таңдаңыз.
Сіз бір камера портын ашасыз, оған плеер бағыттайсыз және интернет мәселесі шешілді деп есептейсіз. Содан кейін телефон оны ойната алмайды, браузер оны ойната алмайды, ал камераның әкімшілендіру беті қоғамдық шеттен бір ғана қате терілген жол қашықтықта тұр. Таңдаған жеткізу моделі, RTSP немесе HLS, кез келген брандмауэр ережесі жазылмай тұрып оның көбіне шешім қабылдайды. VPN тек жеке бөлікті береді.
VPN бастауыш жолын түзейді, көрермен жолын емес
Туннель арқылы камераның жергілікті желісіне қосылған VPS камераға оның жеке мекенжайы бойынша жете алады, және бұл шынымен пайдалы. Бұл камераға өзінің кіретін порты қажет емес және үй маршрутизаторы жабық күйде қалады дегенді білдіреді. Бұл сізге көрерменнің қай тілде сөйлейтінін айтпайды. Жұмыс үстелінің плеері, браузер, телефон және смарт-теледидар әртүрлі хаттамаларды қолдайды, және әрқайсысының TLS, аутентификация және кодектерге қатысты өз күтулері бар.
Міне, бас тартуға тұрарлық болжам: жариялау бастауышты қолжетімді ету дегенді білдіреді. Жариялау шын мәнінде белгілі аудиторияға медианы тұтынудың қолдау көрсетілген жолын беру дегенді білдіреді. Жарияланған ағынның форматы, аудиториясы және тіркелгі деректері бар; қолжетімді камерада олардың ешқайсысы жоқ. Қолжетімділік — туннель шешетін бөлік, ал көрерменнің кіру нүктесі — сіз әлі жобалауға тиіс бөлік.
RTSP — келіссөз, жалғыз порт емес
RTSP сессияны басқаруды тасымалдайды: клиент сипаттама сұрайды, бір немесе бірнеше медиа жолын орнатады, содан кейін ойнатады. Медианың өзін тасымалдау сол орнату кезінде келісіледі, сондықтан хаттаманы бір бағытталған TCP портымен жақсы сипаттау мүмкін емес. Бұл келіссөз — адамдар брандмауэр ережелерін салыстырғанда өткізіп алатын бөлік.
Соңғы нүктелерге байланысты RTP бөлек UDP порттарына келуі мүмкін немесе басқару қосылысына өрілуі мүмкін. Тек 554-ті жіберіп, қалғаны жұмыс істейді деп есептейтін реле әдетте қосылатын, бір жолды хабарлайтын, содан кейін ештеңе көрсетпейтін сессия жасайды. Оған ереже жазу алдында камераңыз шынымен қандай тасымалдауды келісетінін тексеріңіз. Жеке жақтағы жазу мұны бір минутта жауаптайды, ал болжау бір кешке тұрады.
Үйлесімді плеерлері бар шағын, белгілі аудитория үшін әдейі конфигурацияланған RTSP релесі дұрыс жауап болуы мүмкін. Оның қандай көзден тарта алатынын шектеңіз және реледе аутентификация талап етіңіз. Сынаған плеерлеріңізді жазып қойыңыз, өйткені VLC-де жұмыс істейтін RTSP ағыны браузерде бәрібір сәтсіз аяқталуы мүмкін.
HLS — ойнату тізімі және ресурстар
HLS көрермені ойнату тізімін алады, содан кейін сол тізім атайтын медиа сегменттерін алады. HLS спецификациясы осы ресурс үлгісін анықтайды, және маңызды операциялық деталь — ойнату тізімдерінің басқа URL-дерге сілтеме жасауы. Салыстырмалы сілтемелер тізімнің орналасуына қатысты шешіледі, сондықтан жолдарды қайта жазатын прокси оларды дәйекті түрде қайта жазуы керек.
Егер камера қазірдің өзінде пайдалануға жарамды HLS ұсынса, қоғамдық фронтенд бұл тізім мен сегмент сұрауларын туннель арқылы жібере алады. Қолданба жасайтын кілттерге, қайта бағыттауларға және URL-дерге назар аударыңыз. Жеке хостқа көрсететін кез келген абсолютті URL, жергілікті желіден тыс көрермен оны ұстанған сәтте бұзылады. Салыстырмалы жолдар — прокси қайта жазуынан аман қалатын жолдар, сондықтан жасалған шығысты бақылайтын барлық жерде оларға басымдық беріңіз.
Егер камера тек RTSP сөйлесе, бір нәрсе бастауышты көрермен форматына түрлендіруі керек. Қайта қаптау және транскодтау — әртүрлі жұмыстар: қайта қаптау кодекті сақтайды, ал транскодтау оны үйлесімділік үшін қайта кодтайды, және тек екіншісі елеулі CPU жұмсайды. Екеуі де тек жолда VPN болғандықтан қажет бола қоймайды.
Жүктеу желісін тарату болатын орынға қарай жоспарлаңыз. Қоғамдық медиа қызметін қоректендіретін бір жеке қабылдау, өз ағынын туннель арқылы тартатын әрбір көрерменнен мүлдем басқаша әрекет етеді. Екінші үлгі әдетте қаныққан үй қосылысымен және кездейсоқ істен шыққандай көрінетін камерамен аяқталады.
Аутентификацияны сіз жариялайтын шетке қойыңыз
TLS, көрермендерді аутентификациялау және қатынасты журналдау қоғамдық кіру нүктесіне жатады, камераға емес. Бұл камераның тіркелгі деректерін ағынның тіркелгі деректерінен бөлек ұстайды. Бұл сонымен қатар аудитория мүшесі кеткенде қатынасты қайтарып алу үшін бір орын береді. Бұл басқаруларды камераға қою оның орнына әрбір аудитория өзгерісінің ешқашан қоғамдық қолжетімді болмауы тиіс құрылғыдағы әкімшілік өзгеріске айналуын білдіреді.
VPN мен камераның әкімшілік рұқсаттарын жариялау жолынан бөлек ұстаңыз. Ағын тарту үшін камераның веб-интерфейсіне жете алатын VPS сол интерфейсті ашатын машина да болмауы керек. Аудитория камераның мекенжайын ешқашан білмеуі керек.
Содан кейін тізбек жұмыс істейді деп есептеудің орнына шынымен салған екі ұшын тексеріңіз:
$ 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
Жеке көзді сәтті тексеру және қоғамдық шетте ойнату тізімін сәтті алу жобаның әртүрлі жартыларын дәлелдейді. Оларды бөлек тексеріңіз. Аудиторияңыз қолданатын клиенттің дәл сол түрінен ойнату бүкіл тізбекті қамтитын жалғыз тест.
Соңында әр буынында мақсаты бар тізбек аласыз: жеке көз, шектелген қабылдау, таңдалған қаптау, рұқсат етілген көрермен кіруі. Бұл буындардың ешқайсысын алып тастауға болмайды және ешқайсысы порт ашу арқылы пайда болмайды.