Transmetimi në internet nëpërmjet Nginx-RTMP: disa receta të gatshme.

Transmetimi i drejtpërdrejtë i videos është një gjë vërtet e madhe. Çfarë mund të jetë më e lehtë sesa ekzekutimi i menjëhershëm i një aplikacioni të transmetimit të drejtpërdrejtë në smartphone tuaj? Ai do t'ju transmetojë drejtpërdrejt ju ose një ngjarje që ndodh rreth jush… Dhe ndërsa jeni duke transmetuar një video, miqtë tuaj po e shikojnë atë nga pajisjet e tyre celulare. Dhe gjithçka që ju nevojitet për ta realizuar është kamera dhe një mikrofon i integruar në telefonin tuaj inteligjent… A nuk është kjo kënaqësi?

Transmetimi i drejtpërdrejtë ka prezantuar një mënyrë të ndryshme që përdoruesit të lidhen me miqtë e tyre dhe që markat të angazhohen dhe të kontaktojnë klientët e tyre.

Por si mundet biznesi ose startup-i juaj të zbatojë me lehtësi transmetimin e drejtpërdrejtë për Android pa i kushtuar shumë burime dhe orë pune të zhvilluesve për ta bërë atë? Çfarë teknologjie qëndron pas transmetimit të drejtpërdrejtë dhe e bën atë të vërtetë?

Le të gërmojmë në temë për të gjetur përgjigje gjithëpërfshirëse për këto pyetje dhe gjithashtu të mësojmë më shumë rreth zgjidhjeve të gatshme për përdorim që lehtësojnë dhe përshpejtojnë procesin e shtimit të një veçorie të transmetimit të drejtpërdrejtë të videos në aplikacionin tuaj.

Cilat janë karakteristikat e transmetimit të drejtpërdrejtë

Ndryshe nga formati i videos sipas kërkesës, i cili supozon se një përdorues mund të zgjedhë dhe shikojë video në çdo kohë, videot e transmetimit të drejtpërdrejtë janë të lidhura me një moment specifik në kohë dhe shfaqen gjatë regjistrimit.

Dhe ja se si duket procesi i transmetimit të drejtpërdrejtë. Videoja dhe audioja transferohen të dyja përmes mesazheve që shkëmbejnë luajtësi i videos dhe serveri i medias. Luajtësi i videos lidhet së pari me serverin e medias. Serveri transferon një pjesë të videos te luajtësi. Ky fragment video korrespondon me kohën aktuale të luajtjes. Një tampon prej disa sekondash siguron riprodhimin e videos pa vonesa ose ndërprerje. Ky proces përsëritet vazhdimisht gjatë gjithë kohës që zgjat transmetimi në ueb.

Por transmetimi i drejtpërdrejtë nuk transferon kurrë skedarët e mediave në tërësi (duke kursyer kështu gjerësinë e brezit). Në vend të kësaj, është aktivizuar përmes serverëve të mediave përgjegjës për transferimin dhe transmetimin e videove, audios dhe të dhënave dixhitale. Transmetimi i drejtpërdrejtë siguron mbrojtje për skedarët burim video sepse ato nuk mund të kopjohen në kompjuterin e një shikuesi. Me ndihmën e softuerit shtesë, transmetimi i drejtpërdrejtë mbështet gjithashtu bisedën e drejtpërdrejtë dhe pyetjet dhe përgjigjet.

Nuk ekziston vetëm një format i vetëm për të transmetuar të dhëna mediatike. Në vend të kësaj, ju mund të zgjidhni ai që i përshtatet më së miri nevojave tuaja teknike.

Cilat teknologji të transmetimit të videove ekzistojnë?

Ka shumë mënyra për të aktivizuar transmetimin e drejtpërdrejtë në aplikacionin tuaj. Më poshtë do të shqyrtojmë shkurtimisht teknologjitë ekzistuese. Në këtë mënyrë ju do të jeni në gjendje të dalloni veçoritë e tyre kryesore dhe llojin e përmbajtjes që ata janë krijuar më së miri për të ofruar:

  • Protokolli RTMP

Protokolli i mesazheve në kohë reale (ose thjesht RTMP) u zhvillua për transferimin me performancë të lartë të transmetimeve video dhe audio dhe mesazheve të të dhënave në kohë reale në ueb. Transmetimi në kohë reale mundësohet duke vendosur një lidhje të dyanshme midis serverit Flash dhe Flash player.

Adobe Flash Player është klienti më i zakonshëm RTMP që mbështet riprodhimin e videos dhe audios. Aktualisht është i disponueshëm si një specifikim me burim të hapur për zhvillimin e produkteve dhe teknologjisë që ofron transmetime video në formatet AMF, SWF, FLV dhe F4V (në përputhje me formatet e Adobe Flash Player) dhe audio në AAC dhe MP3.

  • Protokollet e transmetimit të bazuara në HTTP (HLS dhe HDS)

Formati HLS bazohet në MPEG2-TS dhe ka të bëjë me transmetimin në pajisjet iOS. Nuk është pjesë e HTML5. HLS kombinon transmetime të shumta me informacionin e meta të dhënave dhe kalon lehtësisht midis të dhënave të ndryshme të mediave.

HDS përdor formatin e Adobe për video dhe jep fragmente të skedarëve MPEG-4. Formati MPEG lejon ruajtjen e meta të dhënave dhe transmetimeve audio dhe video në vende të ndryshme. Transmetimi Dinamik HTTP është një teknologji e përshtatshme për bibliotekat e mëdha të mediave. Ndihmon në reduktimin e gjerësisë së brezit, kursen jetëgjatësinë e baterisë dhe ofron një përvojë më të mirë të përdoruesit në krahasim me HLS.

  • Protokolli i transmetimit Silverlight

Ky format i transmetimit të videos përdoret për aplikacione të pasura në internet si Adobe Flash dhe për shfaqjen e filmave. Pavarësisht se Microsoft Silverlight nuk funksionon më në shfletuesin Chrome, ai është i disponueshëm në Internet Explorer dhe Mozilla Firefox.

  • MPEG-DASH

MPEG-DASH ofron transmetim video të drejtpërdrejtë dhe sipas kërkesës me cilësi të lartë për mediat që vijnë nga serverët HTTP. Formati lejon shtimin e reklamave midis segmenteve të videos për të dy llojet e transmetimit. Përmbajtja e medias kodohet një herë dhe dorëzohet në një kompjuter klient me ndihmën e skemave të ndryshme DRM (Digital Rights Management).

  • Transmetim progresiv i shkarkimit

Me shkarkim progresiv, përmbajtja e medias transferohet nga një server në një kompjuter klient përmes protokollit HTTP. Nuk kërkon ndonjë server transmetimi për pritjen e skedarëve ose shkarkimin e një skedari mediatik për ta parë atë. Shkarkimi progresiv mundëson riprodhimin e videos përpara një shkarkimi të plotë të videos.

Rritja e videos 4K, pritshmëritë e larta të përdoruesve për standardet e cilësisë dhe përvoja e qetë, zhvillimi i platformave të reja efektive dhe lidhja më e shpejtë në internet i bëjnë kërkesat për formatet e transmetimit të videove më të rrepta. Pavarësisht nga shumëllojshmëria e teknologjive të disponueshme, ne do të përqendrohemi në RTMP si një nga protokollet e transmetimit më të përhapur dhe më të preferuar midis zhvilluesve.

Pra, çfarë është protokolli RTMP dhe pse është kaq i mirë

Krijuar nga Macromedia (aktualisht Adobe), Protokolli i Mesazheve në kohë reale siguron transmetim adaptiv të shpejtësisë së biteve (ABS). Kur ndryshon gjerësia e brezit, cilësia e videos përshtatet automatikisht me të. RTMP bazohet në Protokollin e Kontrollit të Transmisionit (TCP) i cili i jep përparësi mirëmbajtjes së lidhjes së qëndrueshme dhe vonesës së ulët. Për sa i përket llojit të përmbajtjes, RTMP lejon transmetimin e të dhënave të mediave të regjistruara dhe të drejtpërdrejta dhe informacionit me tekst.

Për më tepër, RTMP mund të përdoret jo vetëm për transmetim celular. Serveri RTMP mund të dërgojë të dhëna mediatike si në aplikacione në ueb ashtu edhe në pajisje celulare.

Më së shpeshti vlerësohet për avantazhet e mëposhtme që ofron:

  • Është optimizuar posaçërisht për transmetim të drejtpërdrejtë

Përfitimi më i madh që ofron RTMP është optimizimi i transmetimit të të dhënave video dhe audio. Për transmetim, ai përdor portën ekskluzive të vitit 1935 që është e përshtatshme për transmetimin e përmbajtjes me vonesë të ulët, e cila është jetike për transmetimin e drejtpërdrejtë dhe nuk kërkon buferim.

  • Është një teknologji e pjekur

RTMP është përdorur për transmetim të drejtpërdrejtë për më shumë se 10 vjet. Për një zhvillues, konfigurimi i serverit RTMP është një detyrë e lehtë. Për një përdorues, transmetimi i videos është i aktivizuar në formate të ndryshme në të njëjtën kohë. Zbatohen gjithashtu veçoritë e sigurisë si verifikimi i lojtarit.

  • Mund të shikoni çdo pjesë të videos që transmetohet

Të gjithë serverët RTMP lejojnë regjistrimin e transmetimeve të mediave në hyrje dhe ofrojnë mundësinë për të shfaqur videot që nga fillimi. Një përdorues mund të kapërcejë pjesë të videos deri në momentin aktual në transmetim. Kjo veçori është veçanërisht e dobishme për videot e gjata (më shumë se 10 minuta), duke ju lejuar të kaloni lehtësisht në çdo pjesë të saj.

  • Është protokolli më i popullarizuar i transmetimit në kohë reale

RTMP është një protokoll i pavarur nga platforma që nuk kërkon varësi harduerike dhe është i pajtueshëm me Windows, Mac, Linux, Android, iOS dhe Windows celular. Përdoret gjithashtu gjerësisht në pajisjet e lojërave, si PlayStation, Xbox One dhe PS Vita.

Si funksionon RTMP

Me fjalë të thjeshta, transmetimi RTMP përbëhet nga tre entitetet e mëposhtme:

  • Një klient që krijon një transmetim mediatik dhe transmeton me protokollin RTMP në një server. Si "botues" të klientëve, ju mund të përdorni shumë aplikacione në platforma të ndryshme, si lojtarët me bazë FFMPEG, VLC Player, klientët YouTube dhe zgjidhjet e bazuara në AVLib.
  • Një server që trajton një transmetim në hyrje dhe kryen përpunim dhe regjistrim sipas nevojës. Serveri gjithashtu ofron transmetime për klientët e tjerë. Ndër serverët, opsionet më të mira do të ishin Wowza Media Server, Flussonic Media Server dhe Simple RTMP Server.
  • Shikuesit përfaqësojnë çdo klient që mund të shikojë transmetimet e publikuara. Për të shfaqur transmetime të tilla mediatike, mund të përdorni çdo luajtës që mbështet protokollin RTMP. Lajmi i mirë është se pothuajse të gjithë lojtarët e përdorur aktualisht për të gjitha platformat ekzistuese mbështesin transmetimet RTMP. Mund të zgjidhni Flash Player, VLC ose Media Player Classic.

Më komplekset dhe me burime intensive janë aplikacionet e transmetuesve. 'Rrjedha e transmetimit' përfshin përpunimin e mediave, përzierjen, kodimin dhe transmetimin e mëtejshëm përmes protokollit RTMP në një server. Varet ndjeshëm nga një platformë dhe harduer dhe kërkon shumë burime mbështetëse.

Për të transmetuar sa më shumë të dhëna me protokollin RTMP, video dhe audio ndahen në fragmente të madhësive të ndryshme. Madhësitë e paracaktuara janë 64 bajt për audio dhe 128 bajt për video. Madhësitë e pjesëve të videos përcaktohen nga formati i ndërveprimit midis një përdoruesi dhe një serveri.

Fragmentet e mediave më pas ndërthuren dhe shumëfishohen në një lidhje të vetme ndërsa lidhen me gjerësinë e brezit dhe vonesën e një kanali. Transmetimi që vjen nga transmetuesi në server përbëhet nga blloqe të vogla të dhënash që përfshijnë lloje të ndryshme të dhënash (d.m.th., shërbim video, audio, etj.). Transmetimi RTMP mund të transferojë njëkohësisht disa blloqe të ndryshme të të dhënave, duke enkapsuluar kështu si video ashtu edhe audio dhe duke mundësuar thirrjet procedurale në distancë.

Kur klienti hap transmetimin në luajtësin RTMP, një kërkesë dërgohet te serveri RTMP. Një sesion inicializohet dhe ndodh shkëmbimi i të dhënave të shërbimit. Pasi riprodhuesi RTMP i klientit të marrë pjesën e nevojshme të paketave të të dhënave të shërbimit në lidhje me rrymën në vazhdim, ai fillon të dekodojë, buferojë dhe shfaqë transmetimin e medias RTMP.

Me RTMP, media nuk kërkohet të ruhet në ndonjë ruajtje të përkohshme. Ai vazhdon të transmetohet drejtpërdrejt midis klientëve dhe serverëve. Nëse kapaciteti i gjerësisë së brezit lejon, i njëjti rrymë u drejtohet klientëve të shumtë që dërgojnë kërkesa. Kapaciteti i transmetimit përmirësohet nëse disa serverë media futen në një rrjet. Procesi i transmetimit vazhdon derisa serveri ose luajtësi të përfundojë seancën.

Si mund të përdorni RTMP për të transmetuar video në aplikacionin tuaj Android?

Ju mund të shikoni transmetimin RTMP në çdo platformë me ndihmën e çdo lojtari që mbështet protokollin RTMP. Për Android, lojtarët më të njohur të palëve të treta janë lojtarët MX, VLC dhe BS, si dhe çdo lojtar tjetër që mbështet FFMPEG. Për të parë RTMP nga brenda aplikacionit, një zhvillues duhet të integrojë çdo bibliotekë luajtës që mund të lexojë transmetimet RTMP. Këto janë ijkPlayer dhe VLC SDK.

Ekipi i Onix ka dhënë kontributin e tyre teknologjik në gjetjen e një zgjidhjeje të lehtë dhe të bukur për transmetimin e videove dhe kanë krijuar AVLib, bibliotekën e jashtme të Onix për transmetimin Android RTMP.

Le të shohim se si funksionon me transmetimin e drejtpërdrejtë për aplikacionet Android dhe si lindi ideja.

Si AVLib zgjidh problemin bazë për transmetimin RTMP të Android

https://rtmplib-android.com/

Ekipi ynë i zhvilluesve Android ka ardhur në idenë e AVLib pothuajse rastësisht, por me një rezultat dhe efekt të shkëlqyeshëm. Ndërsa punonin në detyrën e shtimit të një veçorie për të transmetuar video dhe audio për pajisjet Android në serverët RTMP, ata hasën në një problem serioz. Kërkesat e klientit deklaruan se aplikacioni duhet të jetë në gjendje të transmetojë të dhëna video dhe audio në kapacitetin e tij maksimal përmes një kamere Android. Ishte gjithashtu e nevojshme të aktivizohej mbështetja e Android 4.0 si versioni minimal, për përdoruesit me pajisje të vjetra celulare që mund ta përdornin atë dhe të zotëronin një numër cilësimesh të përshtatshme përdorshmërie për një përdorues.

Ekipi i Onix ka kryer një hulumtim të thellë dhe krahasim të bibliotekave ekzistuese të transmetimit komercial dhe me burim të hapur. Por pa asnjë rezultat të kënaqshëm. Doli që nuk kishte asnjë zgjidhje të ngjashme në treg që mund të plotësonte nevojat tona teknike në mënyrë të plotë. Anëtarët e ekipit arritën shpejt në një vendim për të krijuar bibliotekën e tyre të jashtme që mund të mbështeste transmetimin RTMP për Android. Dhe për shkak se ekziston një numër i madh i pajisjeve Android dhe versioneve të OS që po përdoren aktualisht, kjo bibliotekë është ndërtuar për të mbështetur nevojat e transmetimit të të gjithë përdoruesve aktualë të Android.

Por kurrë nuk ka kuptim të shpenzoni kohë për të krijuar një mjet një herë që zgjidh një detyrë të veçantë në mënyrë rigoroze në masën e kërkuar. Po sikur të përsëritet një situatë e ngjashme? Pse të mos përdorni më të mirën e asaj që teknologjia ka për të ofruar dhe të ndërtoni një produkt softuerësh të testuar mirë?

Ne synuam të zhvillonim një zgjidhje elegante, fleksibël dhe të thjeshtë, kështu që çdo ekip tjetër Android i palëve të treta ose një zhvillues që po kërkonte një bibliotekë RTMP mund ta integronte lehtësisht në një aplikacion pa pasur nevojë të rishpikte timonin. Dhe ne e bëmë atë! AVLib kombinon të gjitha veçoritë që prisnim dhe zgjidh tërësisht detyrën bazë të transmetimit video.

Si u zhvillua AVLib dhe pse është një bibliotekë e besueshme RTMP

AVLib është një bibliotekë RTMP për të cilën ne jemi vërtet krenarë. Është një produkt softuerësh që zgjidh kërkesat e një klienti për transmetim të drejtpërdrejtë të çdo niveli kompleksiteti. Është një mjet i gatshëm për përdorim për Android Studio që integrohet menjëherë në një aplikacion celular.

AVLib përfaqëson një zgjidhje të përshtatshme dhe të qëndrueshme që bazohet në parimet e mëposhtme:

  • Një integrim i lehtë me aplikacionin

Për një zhvillues Android, do të duhej rreth një orë për të përfunduar procesin e integrimit të AVLib dhe për të shtuar një funksion të drejtpërdrejtë që transmetohet në një aplikacion.

  • Kapaciteti maksimal

Për të zbatuar bibliotekën RTMP dhe për ta fuqizuar atë me një potencial të lartë kapaciteti, ekipi ynë zgjodhi gjuhën e programimit C. Çdo funksion i vetëm i përfshirë në AVLib, duke filluar nga logjika e transportuesit, kodimi, puna me RTMP e deri te përpunimi, u ndërtuan duke përdorur C të pastër.

  • Bibliotekë e krijuar me porosi UI

AVLib është fleksibël dhe mund të përshtatet lehtësisht me nevojat e klientit në dizajnin e ndërfaqes së përdoruesit (d.m.th., butona, tekst) dhe cilësimet e videos (d.m.th., rezolucioni i kornizës, audio, cilësia e kodekut, shpejtësia e biteve).

  • Mbështetje e të gjitha llojeve ekzistuese të pajisjeve Android

Kjo bibliotekë RTMP vjen si një skedar .aar pa varësi. AVLib u testua për t'u siguruar që është në përputhje me pajisje të ndryshme Android dhe mbështet versionin 4.0 dhe më të lartë të sistemit operativ Android.

Mund të gjeni më shumë detaje rreth veçorive të AVLib.

Procesi i zhvillimit të AVLib ishte vërtet plot sfida dhe kërkonte mendim dhe përpjekje nga ekipi ynë Android.

  • Transmetim nga kamerat e veprimit? po!

Një nga veçoritë e veçanta të AVLib është aftësia e tij për të transmetuar video dhe audio nga kamerat e veprimit gjatë fluturimit. Për të aktivizuar këtë veçori, duhet të punoni njëkohësisht me dy ndërfaqe rrjeti të aktivizuara anën i modulit në C. Detyra u krye me sukses, por kërkoi një kërkim të plotë të kodit burimor të sistemit operativ Android dhe korrigjimin e vazhdueshëm.

  • Ndërtimi i ciklit jetësor të transmetimit

Një sfidë tjetër e rëndësishme që hasëm gjatë fazës së zhvillimit ishte mundësimi i punës së qetë me kamerën dhe përpunimi i ciklit jetësor në pajisje të ndryshme. Kjo kërkonte shumë kohë dhe kërkonte shumë punë shqyrtimi.

Fillimisht, RTMP (Protokolli i Mesazheve në kohë reale) u krijua nga Adobe Systems për transmetimin e transmetimeve audio dhe video, mesazhe me tekst dhe të dhëna të tjera nëpër ueb. Parimi kryesor i punës së tij qëndron në fillimin e ndërveprimit midis një serveri dhe Flash Player të përdoruesit. RTMP bazohet në TCP, që do të thotë se përparësia e tij e lartë qëndron në ruajtjen e lidhjes së qëndrueshme dhe sigurimin e ndërveprimit me vonesë të ulët. Për të transmetuar rrjedha të qetë dhe për të transmetuar sa më shumë të dhëna të jetë e mundur, serveri RTMP ndan informacionin në fragmente. Më pas, madhësia e fragmenteve përcaktohet për shkak të formatit të ndërveprimit midis një përdoruesi dhe një serveri.

Ajo që është më interesante për RTMP është se ai përfshin kanale të ndryshme virtuale, të cilat transmetojnë paketa të dhënash gjatë një sesioni mediatik. Këto kanale mund të përfshijnë: një kanal për kërkesat RPC dhe rezultatet e tyre, një për mesazhet e kontrollit, kanalet për transmetimin audio dhe video. Për më tepër, ato mund të funksionojnë njëkohësisht pa shkaktuar ndonjë problem teknik për njëri-tjetrin.

RTMP vs RTSP

Për sa i përket transmetimit të të dhënave, ekziston një protokoll tjetër i njohur i quajtur RTSP. Pra, le të hedhim një vështrim në ndryshimet midis protokolleve RTMP dhe RTSP.

Qëllimi kryesor i RTSP (Real Time Streaming Protocol) është të ruajë aktivitetet e serverëve të transmetimit. Për më tepër, ky protokoll vendos një ndërveprim midis një klienti dhe një serveri. RTSP u mundëson përdoruesve fundorë të kontrollojnë sesionin mediatik me anë të komandave të thjeshta si luajtja, pauza dhe ndalimi. Për më tepër, ai i lejon klientët të shikojnë video nga çdo fragment pa pritur shkarkimin e plotë.

RTMP, nga ana e tij, gjithashtu mban karakteristikat e lartpërmendura. Sidoqoftë, serveri RTMP, me anë të protokollit RTMP, mund të monitorojë çdo veprim të ndërmarrë nga një klient duke filluar nga momenti kur ai ose ajo fillon seancën deri në mbylljen e seancës. Në këtë mënyrë, ai i bën raportet brenda RTMP më të sakta dhe ofron një pamje të plotë të aktivitetit të përdoruesit gjatë sesionit të caktuar mediatik. Po kështu RTMP, RTSP është gjithashtu i aftë të transmetojë drejtpërdrejt. Sidoqoftë, transmetimi i të dhënave të transmetimit nuk është një detyrë kryesore për RTSP, prandaj për këtë qëllim ai ka nevojë për disa protokolle shtesë.

Si funksionon

Parimi i punës së RTMP është i thjeshtë. Për të filluar transmetimin RTMP, mjafton të vendosni ndërveprim midis serverit RTMP dhe luajtësit RTMP të klientit. Pasi të vendoset ky komunikim, serveri fillon të transmetojë median si një rrjedhë konstante bajtësh. Ky proces vazhdon derisa serveri ose luajtësi të përfundojë seancën.

E mira është se protokolli RTMP është shumë fleksibël dhe dhënia e informacionit audio, video dhe teksti në formate të ndryshme i përket aftësive të tij. Për shembull, protokolli RTMP mundëson transmetimin e videos në formatet MP4 dhe FLV, transmetimin audio - në MP3 dhe AAC. Për më tepër, falë këtij protokolli, serveri RTMP dërgon media në aplikacionet në ueb si dhe në pajisjet mobile. Për këtë qëllim, një përdorues duhet të ketë Flash Player të instaluar në një shfletues ose në një pajisje celulare në përputhje me rrethanat. Më pas, skedari swf, i cili përmban të gjitha informacionet e mediave të transmetimit, do të luhet nga Flash Player. Sidoqoftë, një nga përfitimet më të mëdha të protokollit RTMP është se ai mund të aplikohet për transmetim të drejtpërdrejtë dhe sipas kërkesës. Le të hedhim një vështrim në secilin prej këtyre proceseve të transmetimit.

Transmetim i drejtpërdrejtë

Transmetimi i drejtpërdrejtë i videos i përket veçorive kryesore të protokollit RTMP. Me ndihmën e tij, ju mund ta transmetoni videon tuaj drejtpërdrejt gjatë procesit të regjistrimit të saj. Kryesisht, transmetimi i drejtpërdrejtë përdoret për ngjarje sportive, shfaqje, koncerte etj. Në këtë rast, protokolli RTMP është fjalë për fjalë i pazëvendësueshëm. Ka vonesë të ulët nga koha reale në transmetim, në krahasim me protokollin HTTP dhe vonesën e tij prej më shumë se dhjetë sekondash, gjë që nuk është e përshtatshme për transmetim të drejtpërdrejtë profesional.

Le të shqyrtojmë një shembull më të gjallë të funksionalitetit të jashtëzakonshëm RTMP për transmetim të drejtpërdrejtë. Për shembull, kamerat e njohura IP që mbështesin protokollin RTMP, kanë altoparlantë të integruar, kështu që ju jo vetëm që mund ta shihni videon drejtpërdrejt, por edhe të përfshiheni në procesin e transmetimit dhe të shprehni mendimin tuaj për transmetuesit.

Transmetimi sipas kërkesës

Transmetimi sipas kërkesës i lejon përdoruesit të zgjedhin se kur të shikojnë përmbajtjen e përzgjedhur të medias, gjë që është më e përshtatshme për ta sesa të vëzhgojnë këtë përmbajtje në momentin e transmetimit të saj. Si rregull, video sipas kërkesës (VOD) përdoret për disa arsye: sepse luan pa probleme edhe me shpejtësi të ulët të lidhjes në internet, kur numri i shikuesve në internet nuk është i konsiderueshëm, për hir të cilësisë HD. Me protokollin RTMP edhe VOD është më efikas. Para së gjithash, ai ofron mbështetje multicast. Nëse dëshironi të keni një transmetim brenda rrjetit tuaj të punës dhe t'ua ofroni atë përdoruesve të shumtë, me RTMP nuk do të keni nevojë të krijoni lidhje të veçanta për secilin përdorues. Protokollet e tjera si HTTP ose CDN nuk e kanë këtë veçori. Gjithashtu, RTMP u mundëson përdoruesve të rilidhen me transmetimin e videos në rast të problemeve të lidhjes. Gjatë problemeve me lidhjen, video luhet nga buffer dhe kur një përdorues rilidhet, buferi fillon të mbushet dhe në këtë mënyrë shmang pauzat e shpeshta në transmetimin e videos.

Implementimet RTMP

Natyrisht, i gjithë ky informacion ju bën kurioz se si të zbatoni RTMP. Ky është një protokoll ndër-platformë dhe funksionon në Windows, Mac, Linux, Android, Windows Mobile, iOS. A keni tastierë dhe ju pëlqen të luani lojëra? Mund të përdorni lehtësisht shërbimet RTMP për pajisje të tilla si Xbox One, PlayStation dhe PS Vita.

Për shkak të shumëllojshmërisë së platformave të përshtatshme për protokollin RTMP, ka shumë opsione për zbatimin e tij. Ato mund të ndryshojnë nga zbatimi i linjës së komandës deri tek zbatimi i plotë me burim të hapur.

Zbatimi i linjës së komandës

Mjeti RTMPDump përdoret për zbatimin e linjës së komandës, pasi përballet në mënyrë të përsosur me regjistrimin e transmetimeve RTMP, transmetimin e drejtpërdrejtë dhe videon sipas kërkesës. Përveç kësaj, RTMPDump është një mjet me burim të hapur që mund të përdoret në Linux, Android, Mac OS X dhe Microsoft. Ky mjet është shumë i popullarizuar për shkak të madhësisë së tij të vogël dhe aftësisë për të deshifruar RTMPE, i cili është i koduar RTMP, dhe RTMPS – RTMP i sigurt.

Paketa RTMPDump ka tre programe: rtmpdump, rtmpsrv dhe rtmpsuck. Secili prej këtyre programeve kryen funksione të veçanta. Për shembull, rtmpdump përdoret për të krijuar lidhje me serverët RTMP dhe për të kapur vetë transmetimin; rtmpsuck mund të kapë edhe transmetimin, ose mund të ndihmojë në mbledhjen e parametrave kyç për rtmpdump. Funksioni kryesor i rtmpsrv është të mbajë gjurmët e lidhjeve dhe transmetimeve.

Zbatimi i plotë

Nëse jeni më të interesuar për zbatimin e plotë, do t'ju nevojiten këto tre pjesë të softuerit: koduesi i drejtpërdrejtë i videos, serveri i transmetimit të mediave dhe aplikacioni i klientit video. Nuk e dini cilin kodues video të drejtpërdrejtë të instaloni? Më pas, mund të zgjidhni midis Flash Media Live Encoder, FFmpeg, WireCast, Wowza Transcoder, Nimble Streamer Transcoder. Megjithatë, ju lutemi kini parasysh se më i popullarizuari është Flash Media Live Encoder, i cili është i disponueshëm për shkarkim falas në faqen e internetit të Adobe.

Sa i përket aplikacionit të klientit video, Adobe Flash Player është varianti më i këshillueshëm. Është një luajtës RTMP falas dhe funksionon si një shtojcë nga një shfletues apo edhe pajisje celulare. Flash Player është i përshtatshëm për Windows, OS X, Chrome OS dhe Linux. Opsionet alternative janë Gnash dhe VLC media player. Të dy janë lojtarë të mediave me burim të hapur. Gnash ka të gjitha shanset për të zëvendësuar Flash Player në transmetimin RTMP në Linux. Media player VLC, nga ana e tij, nuk është universal, pasi mund të mbajë transmetimet RTMP vetëm pjesërisht.

Serverët RTMP si Adobe Flash Media Server, Wowza Streaming Engine, Flussonic Media Server pretendohen të jenë shumë të mirë. Sidoqoftë, mund të instaloni server RTMP falas si Nginx me Modulin RTMP ose Red5, i cili është gjithashtu një server RTMP me burim të hapur në Java.

Si të trajtoni problemet më të shpeshta me protokollin RTMP

Protokolli RTMP, pavarësisht nga të gjitha avantazhet e tij të dukshme, ka edhe disa disavantazhe. Për shkak të faktit se ai ndryshon shumë nga protokolli HTTP, ai nuk mbështetet nga HTML5. Për më tepër, protokolli RTMP funksionon dobët në iDevices dhe ndikon në cilësinë e transmetimit të videos. Në këtë rast, është më mirë të përdorni protokollin HLS në pajisjet e Apple. Parimet e punës HLS dhe RTMP janë mjaft të ngjashme, por, në rastet me HLS, transmetimi ndahet në seri skedarësh të vegjël të bazuar në HTTP. Fillimisht, ky protokoll u zhvillua për shfletuesin Quicktime, iOS dhe Safari. Megjithatë, tani protokolli HLS mund të përdoret edhe në shumë platforma të tjera. Protokolli përballet shumë mirë me kufizimet e gjerësisë së brezit dhe përshtat cilësinë e videos në përputhje me rrethanat. Duke marrë parasysh shpejtësinë e shpërndarjes së videos, HLS nuk do të jetë varianti më i mirë, pasi vonesa e tij është njëzet sekonda.

Një pengesë tjetër e protokollit RTMP është se është i prekshëm ndaj çështjeve të gjerësisë së bandës. Ndonjëherë, gjerësia e ulët e brezit mund të shkaktojë ndërprerje në transmetimin e medias ose edhe transmetimi mund të mos fillojë nëse shpejtësia e lidhjes në internet nuk është e mjaftueshme. Një mënyrë alternative për transmetim me gjerësi bande të kufizuar është përdorimi i Dash. Dash është një teknologji adaptive e transmetimit të shpejtësisë së biteve e cila ofron transmetime mediatike me cilësi të lartë. Kjo teknikë është në gjendje të diagnostikojë gjerësinë e brezit të një përdoruesi të caktuar dhe të përshtatë cilësinë e videos në përputhje me shpejtësinë e lidhjes. Për më tepër, nuk mund të bëjë pa një kodues që kodon videon me shumë shpejtësi bit. Më pas, kodimet e ndryshme ndërrohen nga luajtësi për shkak të burimeve të përshtatshme. Si rezultat, arrihet pak buffering dhe fitohet një përvojë e shkëlqyer video. Është e vështirë të vlerësohen të gjitha përfitimet e kësaj teknike për transmetimin e ngjarjeve të mëdha në nivel kombëtar, për shembull.

Një dobësi tjetër e protokollit RTMP qëndron në domosdoshmërinë e instalimit të plug-in-it të Flash Player, pa të cilin transmetimi i mediave RTMP do të jetë i pamundur. Gjithashtu, ka disa probleme gjatë aplikimit të RTMP për shërbimet e transmetimit CDN.

A keni ende pyetje në lidhje me protokollin RTMP ose zbatimin e tij? dhe ne do t'ju ndihmojmë me të dhe do t'i demonstrojmë të gjitha përfitimet e tij në praktikë.

Kohët e fundit kam hasur në një temë "Serveri i transmetimit në internet i bazuar në nginx" në lidhje me modulin e mrekullueshëm të Roman Harutyunyan (@rarutyunyan) për nginx: nginx-rtmp-module. Moduli është shumë i lehtë për t'u konfiguruar dhe ju lejon të krijoni një server për publikimin e regjistrimeve video dhe transmetimin e drejtpërdrejtë bazuar në nginx.

Ju mund të lexoni për vetë modulin në faqen e tij në GitHub, por unë dua të jap disa shembuj të thjeshtë përdorni. Shpresoj se kjo temë do të ndihmojë fillestarët në krijimin e videove (si unë).

Shkurtimisht rreth RTMP

RTMP (Protokolli i Mesazheve në kohë reale) është një protokoll transmetimi i pronarit nga Adobe. Transporti i paracaktuar është TCP (port 1935). Është gjithashtu e mundur të inkapsulohet RTMP brenda HTTP (RTMPT). Klienti RTMP është kryesisht Adobe Flash Player.
Kodiku i videos - H.264, kodiku audio AAC, kontejnerët nellymoser ose MP3, MP4 ose FLV.

Publikimi i një videoje

Me fjalë të tjera, video sipas kërkesës (VOD). Thjesht shtoni atë në nginx.conf në seksionin rtmp (server (…)).
aplikacioni vod (luaj /var/videos; )

(Shënim: sigurisht, seksioni nuk duhet të quhet vod)
Tani mund të vendosni një skedar video në formatin e duhur në dosjen /var/videos dhe të "ushqeni" burimin te luajtësi, për shembull rtmp://server/vod/file.flv. Me sa kuptoj unë, MP4 mbështet në mënyrë origjinale rikthimin e videos, ndërsa FLV do të duhet të indeksohet veçmas.

Transmetim online

Ne mund të dërgojmë një transmetim video dhe audio në server duke përdorur të njëjtin protokoll RTMP për publikim. Dhe klientët tanë do të mund të shikojnë transmetimin. Për ta bërë këtë, duhet të shtoni një seksion në server:

Aplikimi drejtpërdrejt (lejo publikimin 1.2.3.4; lejo publikimin 192.168.0.0/24; refuzo publikimin e të gjithave; lejo luajtjen e të gjithave; drejtpërdrejt; )

Në makinën nga e cila do të transmetojmë, fillimisht duhet të marrim një listë të pajisjeve DirectShow. Start - Run - cmd, shkoni te dosja ffmpeg/bin dhe ekzekutoni:
ffmpeg -lista e pajisjeve të vërteta -f dshow -i bedel

Nëse emri i burimit tuaj përmban shkronja ruse, ato mund të duken si karaktere të ndyra. Administratorët e vërtetë përdorin iconv, dhe djemtë e zakonshëm si unë deshifrojnë marrëzitë në faqen e internetit të Lebedev. FFmpeg" ju duhet të ushqeni një mbishkrim të lexueshëm.

Tani, duke ditur emrin e burimit video dhe audio, mund ta kapni duke përdorur ffmpeg dhe ta dërgoni në server.

Webkamera

Së paku, duhet të specifikoni burimin e videos, kodekun dhe serverin:
ffmpeg -f dshow -i video="Webkamera C170" -c:v libx264 -an -f flv "rtmp://1.2.3.4/live/test.flv live=1"

Në vend të "Webcam C170", ju duhet të zëvendësoni emrin e kamerës suaj nga lista.
Ndërprerësi -an do të thotë që ne nuk po transmetojmë një transmetim audio. Nëse nevojitet një transmetim audio, linja e nisjes do të duket diçka si kjo:
ffmpeg -f dshow -i video="Webcam C170" -f dshow -i audio="Mikrofoni..." -c:v libx264 -c:a libfaac -ar 44100 -ac 2 -f flv "rtmp://1.2 .3.4/live/test.flv live=1"
Këtu po përdorim kodek libfaac, norma e kampionimit 44100, 2 kanale (stereo). Mund të përdorni MP3 në vend të AAC (kodik libmp3lame).

Kamera analoge

Nëse kamera juaj ka një dalje analoge, mund ta lidhni atë me kompjuterin tuaj duke përdorur një pajisje fotografike. Unë përdor një aparat fotografik PAL të lirë dhe një pllakë regjistrimi USB nga Dealextreme.

Ffmpeg -r pal -s pal -f dshow -i video="USB2.0 ATV" -c:v libx264 -an -f flv "rtmp://1.2.3.4/live/test.flv live=1"

Kapja e ekranit

Këtu ka dy opsione: instaloni FFSplit ose përdorni regjistruesin e kapjes së ekranit me FFmpeg.
FFSplit është më i lehtë për t'u përdorur sepse ai ka një GUI miqësore për përdoruesit, por nuk funksionon nën XP/2003.

Nëse vendosni të zgjidhni metodën e dytë, atëherë linja e fillimit të FFmpeg do të duket diçka si kjo:
ffmpeg -f dshow -i video="screen-capture-recorder" -c:v libx264 -an -r 2 -f flv "rtmp://1.2.3.4/live/test.flv live=1"
Transmetimi audio mund të kapet me kapës virtual-audio.


Shembull i kapjes së ekranit në një aplikacion

Ritransmetim

Natyrisht, ju mund të transmetoni skedarin video ose audio (ose transmetim) FFmpeg në server. Në shembullin e mëposhtëm ne po transmetojmë video MJPEG nga një aparat fotografik në distancë:
ffmpeg -f mjpeg -i video="http://iiyudana.miemasu.net/nphMotionJpeg?Resolution=320x240&Quality=Standard" -c:v libx264 -f flv "rtmp://1.2.3.4/live/test.flv drejtpërdrejt = 1"
Por për qëllime të tilla, është më e arsyeshme të përdoret opsioni push në vetë serverin RTMP për të eliminuar lidhjen e ndërmjetme dhe për të tërhequr rrjedhën në vetë serverin.


Disa kamera në Japoni

Akordim, zgjidhja e problemeve

-emri i paracaktuar H.264 ka disa grupe cilësimesh të raportit të ngjeshjes/shpejtësisë: ultra i shpejtë, super i shpejtë, shumë i shpejtë, më i shpejtë, i shpejtë, mesatar, i ngadalshëm, më i ngadalshëm, shumë i ngadalshëm. Prandaj, nëse doni të përmirësoni performancën, duhet të përdorni:
- ultrafast i paracaktuar
-krh numri ndikon drejtpërdrejt në shpejtësinë dhe cilësinë e biteve. Pranon vlera nga 0 në 51 - sa më i lartë të jetë numri, aq më i ulët është cilësia e figurës. Parazgjedhja 23, 18 - cilësi pa humbje. Shpejtësia e biteve afërsisht dyfishohet kur CRF zvogëlohet me 6.

-r numri vendos FPS-në hyrëse dhe dalëse. Për burimet nga të cilat kapni imazhin, mund ta vendosni atë në vend të -r -re për të përdorur FPS amtare.

-rtbufsize numri madhësia e tamponit në kohë reale. Nëse po merrni vazhdimisht mesazhe të tejmbushjes së tamponit dhe rënies së kornizës, mund të vendosni një buffer të madh (p.sh. 100000k), por kjo mund të rrisë vonesën e transmetimit.

-pix_fmt specifikon modelin e ngjyrës. Nëse shihni një katror të zi në vend të një fotografie, por tingulli funksionon, provoni ta vendosni yuv420p ose yuv422p.

-s gjerësia e gjatë madhësia e figurës hyrëse dhe dalëse.

-g numri Me sa kuptoj unë, ky është numri maksimal i kornizave midis kornizave kryesore. Nëse FPS-ja juaj është shumë e ulët, mund ta vendosni këtë vlerë më të ulët për të zvogëluar vonesën në fillimin e transmetimit.

-keyint_min numri numri minimal i kornizave ndërmjet kornizave kyçe.

-vf "crop=w:h:x:y" shkurto videon

-tune zerolatency Opsioni "magjik" për të reduktuar vonesën e transmetimit. Nuk kam gjetur se çfarë bën saktësisht (-:

- analiza 0çaktivizon analizën e kohëzgjatjes, e cila ndihmon në uljen e vonesës së transmetimit

Përveç parametrave audio të diskutuar më sipër, mund t'ju duhet -kopje e kodekut nëse transmetimi juaj audio nuk kërkon transkodim shtesë në MP3/AAC.

Shembull: transmetimi nga një kamerë në internet me vonesë të ulët pa zë, vizatoni kohën aktuale në krye të figurës

Ffmpeg -r 25 -rtbufsize 1000000k -analyzeduration 0 -s vga -copyts -f dshow -i video="Uebkamera C170" -vf "drawtext=fontfile=verdana.ttf: [email i mbrojtur]:fontsize=48:box=1: [email i mbrojtur]:text=%(koha lokale)" -s 320x240 -c:v libx264 -g 10 -keyint_min 1 -paravendosur UltraFast -tune zerolatency -crf 25 -an -r 3 -f flv "rtmp://1.2.3.4:1935/ live/b.flv live=1"

Lojtar në faqen e internetit

Gjithçka është e thjeshtë këtu. Për shembull, instaloni një nga lojtarët më të njohur në faqen tuaj të internetit

Ju pëlqeu artikulli? Ndani me miqtë tuaj!