Biografije Karakteristike Analiza

Protokol rtmp port 1935. Online emitovanje putem Nginx-RTMP: nekoliko gotovih recepata

U početku je Adobe Systems kreirao RTMP (Protokol za razmjenu poruka u realnom vremenu) za prijenos audio i video tokova, tekstualnih poruka i drugih podataka preko weba. Glavni princip njegovog rada leži u pokretanju interakcije između servera i korisnikovog Flash Player-a. RTMP je baziran na TCP-u, što znači da njegov visoki prioritet leži u održavanju stabilne veze i pružanju interakcije niske latencije. Da bi emitovao glatke tokove i prenio što više podataka, RTMP server dijeli informacije na fragmente. Zatim se definiše veličina fragmenata zbog formata interakcije između korisnika i servera.

Ono što je interesantnije kod RTMP-a je to što uključuje različite virtuelne kanale, koji prenose pakete podataka tokom jedne medijske sesije. Ovi kanali mogu uključivati: kanal za RPC zahtjeve i njihove rezultate, jedan za kontrolne poruke, kanale za audio i video streaming. Štaviše, oni mogu raditi istovremeno bez izazivanja tehničkih problema jedan drugom.

RTMP vs RTSP

Što se tiče prenosa podataka, postoji još jedan dobro poznati protokol koji se zove RTSP. Dakle, pogledajmo razlike između RTMP i RTSP protokola.

Glavna svrha RTSP (Real Time Streaming Protocol) je održavanje aktivnosti streaming servera. Nadalje, ovaj protokol uspostavlja interakciju između klijenta i servera. RTSP omogućava krajnjim korisnicima da kontrolišu medijsku sesiju pomoću jednostavnih komandi kao što su reprodukcija, pauza i zaustavljanje. Omogućava klijentima da gledaju video iz bilo kojeg fragmenta bez čekanja na potpuno preuzimanje.

RTMP, sa svoje strane, takođe podržava gore navedene karakteristike. Međutim, RTMP server, pomoću RTMP protokola, može pratiti svaku radnju koju klijent poduzima počevši od trenutka kada on ili ona započne sesiju do zatvaranja sesije. Na taj način čini izvještaje unutar RTMP-a preciznijim i pruža potpunu sliku aktivnosti korisnika tokom određene medijske sesije. Slično RTMP, RTSP je sposoban i za live streaming. Međutim, streaming podataka nije glavni zadatak za RTSP, pa su mu za tu svrhu potrebni dodatni protokoli.

Kako radi

Princip rada RTMP-a je jednostavan. Da biste pokrenuli RTMP stream, dovoljno je uspostaviti interakciju između RTMP servera i klijentskog RTMP playera. Jednom kada je ova komunikacija postavljena, server počinje da prenosi medij kao konstantan tok bajtova. Ovaj proces se nastavlja sve dok server ili igrač ne završe sesiju.

Dobra stvar je što je RTMP protokol vrlo fleksibilan i isporuka audio, video i tekstualnih informacija u različitim formatima spada u njegove mogućnosti. Na primjer, RTMP protokol omogućava video streaming u MP4 i FLV formatima, audio streaming – u MP3 i AAC. Štaviše, zahvaljujući ovom protokolu, RTMP server šalje medije na web aplikacije kao i na mobilne uređaje. U tu svrhu korisnik mora imati instaliran Flash Player u pretraživaču ili na mobilnom uređaju. Zatim će Flash Player reproducirati swf datoteku koja sadrži sve medijske informacije streama. Međutim, jedna od najvećih prednosti RTMP protokola je ta što se može primijeniti na prijenos uživo i na zahtjev. Pogledajmo svaki od ovih procesa strujanja.

prenos uživo

Video streaming uživo spada u ključne karakteristike RTMP protokola. Uz njegovu pomoć možete emitovati svoj video uživo tokom procesa njegovog snimanja. Prijenos uživo se uglavnom koristi za sportske događaje, emisije, koncerte itd. U ovom slučaju, RTMP protokol je doslovno nezamjenjiv. Ima nisko kašnjenje u realnom vremenu u strimingu, u poređenju sa HTTP protokolom i njegovo kašnjenje od više od deset sekundi, što nije prikladno za profesionalni live streaming.

Pogledajmo još jedan živopisan primjer izuzetne RTMP funkcionalnosti za live streaming. Na primjer, popularne IP kamere koje podržavaju RTMP protokol, imaju ugrađene zvučnike, tako da možete ne samo gledati video uživo, već i biti uključeni u proces emitovanja i izraziti svoje mišljenje strimerima.

Streaming na zahtjev

Streaming na zahtjev omogućava korisnicima da odaberu kada će gledati odabrani medijski sadržaj, što im je zgodnije nego da gledaju ovaj sadržaj u vrijeme njegovog emitiranja. Video na zahtjev (VOD) se po pravilu koristi iz više razloga: jer se nesmetano reproducira čak i pri maloj brzini internetske veze, kada broj gledatelja na mreži nije značajan, radi HD kvaliteta. Sa RTMP protokolom čak je i VOD efikasniji. Prije svega, pruža podršku za multicast. Ako želite da imate jedan stream unutar vaše radne mreže i da ga omogućite više korisnika, sa RTMP-om nećete morati kreirati zasebne veze za svakog korisnika. Drugi protokoli kao što su HTTP ili CDN nemaju ovu funkciju. Takođe, RTMP omogućava korisnicima da se ponovo povežu na video stream u slučaju problema sa vezom. U slučaju problema sa konekcijom, video se reprodukuje iz bafera i kada se korisnik ponovo poveže bafer počinje da se puni i na taj način izbegava česte pauze u video streamu.

RTMP implementacije

Očigledno, sve ove informacije vas čine znatiželjnim kako implementirati RTMP. Ovo je višeplatformski protokol i radi na Windows, Mac, Linux, Android, Windows Mobile, iOS. Imate li konzolu i uživate u igranju igrica? Lako možete koristiti RTMP usluge za uređaje kao što su Xbox One, PlayStation i PS Vita.

Zbog raznovrsnosti platformi pogodnih za RTMP protokol, postoji mnogo opcija za njegovu implementaciju. Mogu varirati od implementacije naredbenog retka do implementacije punog otvorenog koda.

implementacija komandne linije

RTMPDump alat se koristi za implementaciju komandne linije, jer se savršeno nosi sa snimanjem RTMP streamova, emitovanjem uživo i video na zahtjev. Osim toga, RTMPDump je alat otvorenog koda koji se može koristiti na Linuxu, Androidu, Mac OS X-u i Microsoftu. Ovaj uslužni program je veoma popularan zbog svoje male veličine i mogućnosti dešifrovanja RTMPE, koji je šifrovani RTMP, i RTMPS – sigurni RTMP.

RTMPDump paket ima tri programa: rtmpdump, rtmpsrv i rtmpsuck. Svaki od ovih programa obavlja određene funkcije. Na primjer, rtmpdump se koristi za uspostavljanje veze sa RTMP serverima i hvatanje samog toka; rtmpsuck također može uhvatiti stream, ili može pomoći u prikupljanju ključnih parametara za rtmpdump. Glavna funkcija rtmpsrv-a je praćenje veza i tokova.

Potpuna implementacija

Ako ste više zainteresirani za potpunu implementaciju, trebat će vam ova tri dijela softvera: video koder uživo, server za streaming medija i aplikacija za video klijent. Ne znate koji video koder uživo instalirati? Zatim možete birati između Flash Media Live Encoder, FFmpeg, WireCast, Wowza Transcoder, Nimble Streamer Transcoder. Međutim, uzmite u obzir da je najpopularniji je Flash Media Live Encoder, koji je dostupan za besplatno preuzimanje na Adobe web stranici.

Što se tiče video klijentske aplikacije, Adobe Flash Player je najpoželjnija opcija. To je besplatni RTMP plejer i radi kao dodatak iz pretraživača ili čak mobilnog uređaja. Flash Player je pogodan za Windows, OS X, Chrome OS i Linux. Alternativne opcije su Gnash i VLC media player. Oba su open source media playeri. Gnash ima sve šanse da zamijeni Flash Player u RTMP streamingu na Linuxu. VLC media player, sa svoje strane, nije univerzalan, jer može samo djelomično održavati RTMP streamove.

Za RTMP servere kao što su Adobe Flash Media Server, Wowza Streaming Engine, Flussonic Media Server se tvrdi da su veoma dobri. Međutim, možete instalirati besplatni RTMP server kao što je Nginx sa RTMP modulom ili Red5, koji je takođe RTMP server otvorenog koda na Javi.

Kako riješiti najčešće probleme s RTMP protokolom

RTMP protokol, uprkos svim svojim očiglednim prednostima, ima i neke nedostatke. Zbog činjenice da se dosta razlikuje od HTTP protokola, HTML5 ga ne podržava. Nadalje, RTMP protokol loše radi na iDevices i utiče na kvalitet video streaminga. U tom slučaju, bolje je koristiti HLS protokol na Apple uređajima. Principi rada HLS-a i RTMP-a su prilično slični, ali, u slučajevima sa HLS-om, stream je podijeljen u niz sitnih datoteka baziranih na HTTP-u. U početku je ovaj protokol razvijen za Quicktime, iOS i Safari pretraživač. Međutim, sada se HLS protokol može koristiti i na mnogim drugim platformama. Protokol se vrlo dobro nosi s ograničenjima propusnog opsega i u skladu s tim prilagođava kvalitet videa. S obzirom na brzinu isporuke videa, HLS neće biti najbolji varijantu, jer mu je latencija dvadeset sekundi.

Još jedan nedostatak RTMP protokola je da je osjetljiv na probleme sa propusnim opsegom. Ponekad, niska propusnost može uzrokovati prekide u strimingu medija ili čak stream možda neće početi ako brzina internetske veze nije dovoljna. Alternativni način za emitiranje s ograničenim propusnim opsegom je korištenje Dash-a. Dash je adaptivna tehnologija prijenosa bitrate-a koja pruža visokokvalitetno emitiranje medija. Ova tehnika je u stanju da dijagnostikuje propusni opseg određenog korisnika i prilagodi kvalitet videa u skladu sa brzinom veze. Osim toga, ne može bez enkodera koji kodira video pri mnogo bitnih brzina. Zatim igrač mijenja različita kodiranja zbog odgovarajućih resursa. Kao rezultat, postiže se malo baferiranja i stječe se odlično video iskustvo. Teško je procijeniti sve prednosti ove tehnike za prijenos velikih događaja na nacionalnom nivou, na primjer.

Još jedan nedostatak RTMP protokola leži u potrebi da se instalira Flash Player plug-in, bez kojeg će prijenos RTMP medija biti nemoguć. Također, postoje problemi prilikom primjene RTMP-a za CDN streaming usluge.

Imate li još pitanja u vezi RTMP protokola ili njegove implementacije? a mi ćemo vam pomoći u tome i pokazati sve njegove prednosti u praksi.

Nedavno sam naišao na nit "Server za live streaming baziran na NGinxu" o predivnom modulu Romana Harutyunyan (@rarutyunyan) za nginx: nginx-rtmp-module. Modul je vrlo jednostavan za postavljanje i omogućava kreiranje servera za objavljivanje video snimaka i emitovanja uživo na bazi nginxa.

O samom modulu možete pročitati na njegovoj GitHub stranici, ali želim dati nekoliko jednostavnih primjera upotrebe. Nadam se da će ova tema pomoći novopridošlicama u video biznisu (poput mene).

Ukratko o RTMP-u

RTMP (Real Time Messaging Protocol) je vlasnički protokol za emitovanje iz Adobe-a. Zadani transport je TCP (port 1935). Također je moguće enkapsulirati RTMP u HTTP (RTMPT). RTMP klijent je prvenstveno Adobe Flash Player.
Video kodek - H.264, AAC audio kodek, nellymoser ili MP3, MP4 ili FLV kontejneri.

Objavljivanje videa

Drugim riječima, video na zahtjev (VOD). Samo dodajte u nginx.conf u rtmp sekciji ( server(…)).
aplikacija vod (play /var/videos; )

(Napomena: naravno, odeljak ne mora da se zove vod)
Sada možete staviti video datoteku u ispravnom formatu u /var/videos folder i "ubaciti" izvor plejeru, na primjer, rtmp://server/vod/file.flv. Koliko sam shvatio, MP4 izvorno podržava premotavanje videa, dok će FLV morati da se posebno indeksira.

On-line prevod

Video i audio stream možemo poslati na server koristeći isti RTMP protokol za objavljivanje. A naši korisnici će moći gledati prijenos. Da biste to učinili, morate dodati odjeljak na server:

Aplikacija uživo ( dozvoli objavljivanje 1.2.3.4; dozvoli objavljivanje 192.168.0.0/24; zabrani objavljivanje svih; dozvoli reprodukciju svih; uživo; )

Na mašini sa koje ćemo emitovati, prvo treba da dobijemo listu DirectShow uređaja. Start - Pokreni - cmd, idite u ffmpeg/bin folder i pokrenite:
ffmpeg -list_devices istina -f dshow -i lažna

Ako u nazivu vašeg izvora postoje ruska slova, onda se mogu prikazati kao krakozyabry. Pravi administratori koriste iconv, a jednostavni momci poput mene će dekodirati grešku na Lebedevoj stranici. FFmpeg" trebate unijeti čitljiv natpis.

Sada, znajući ime video i audio izvora, možemo ga snimiti pomoću ffmpeg i poslati na server.

Web kamera

U najmanju ruku, trebate navesti video izvor, kodek i server:
ffmpeg -f dshow -i video="Webcam C170" -c:v libx264 -an -f flv "rtmp://1.2.3.4/live/test.flv live=1"

Umjesto "Webcam C170" trebate zamijeniti naziv svoje kamere sa liste.
Prekidač -an kaže da ne prenosimo audio tok. Ako je potreban audio stream, linija za pokretanje će izgledati otprilike ovako:
ffmpeg -f dshow -i video="Webcam C170" -f dshow -i audio="Mikrofon..." -c:v libx264 -c:a libfaac -ar 44100 -ac 2 -f flv "rtmp://1.2 .3.4/live/test.flv live=1"
Ovdje koristimo libfaac kodek, brzina uzorkovanja 44100, 2 kanala (stereo). Možete koristiti MP3 umjesto AAC (libmp3lame kodek).

analogna kamera

Ako vaša kamera ima analogni izlaz, možete je povezati sa računarom pomoću uređaja za snimanje. Koristim jeftinu PAL kameru i Dealextreme USB ploču za snimanje.

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"

Snimanje ekrana

Ovdje postoje dvije opcije: instalirati FFSplit ili koristiti screen-capture-recorder sa FFmpeg.
FFSplit je lakši za korištenje jer ima lijep GUI, ali ne radi pod XP/2003.

Ako odlučite odabrati drugi način, tada će linija za pokretanje FFmpeg izgledati otprilike ovako:
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"
Audio stream se može snimiti virtuelnim-audio-capturerom.


Primjer snimanja ekrana u aplikaciji

relej

Naravno, možete prenijeti FFmpeg video ili audio fajl (ili stream) na server. U primjeru ispod, prenosimo MJPEG video sa udaljene kamere:
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 live =1"
Ali u takve svrhe, ima smisla koristiti opciju push na samom RTMP serveru da eliminišete međuvezu i povučete stream na samom serveru.


Neka vrsta web kamere u Japanu

Tuning, rješavanje problema

-preset ime H.264 ima nekoliko skupova postavki omjera kompresije/brzine: ultrabrzo, superbrzo, vrlo brzo, brže, brzo, srednje, sporo, sporije, vrlo sporo. Dakle, ako želite poboljšati performanse, trebali biste koristiti:
-preset ultrabrzo
-crf broj direktno utiče na bitrate i kvalitet. Uzima vrijednosti od 0 do 51 - što je više, to je niži kvalitet slike. Zadano 23, 18 - kvalitet bez gubitaka. Brzina u bitovima se otprilike udvostručuje kada se CRF smanji za 6.

-r broj postavlja ulazni i izlazni FPS. Za izvore iz kojih snimate sliku, umjesto toga možete postaviti -r -re da koristite izvorni FPS.

-rtbufsize broj veličina bafera u realnom vremenu. Ako stalno dobijate prekoračenja bafera i ispuštene okvire, možete postaviti veliki bafer (npr. 100000k), ali to može povećati kašnjenje prijenosa.

-pix_fmt postavlja model boja. Ako imate crni kvadrat umjesto slike, a zvuk radi, pokušajte staviti yuv420p ili yuv422p.

-s širinaxvisina veličina ulazne i izlazne slike.

-g broj Koliko sam shvatio, ovo je maksimalan broj okvira između ključnih kadrova. Ako je vaš FPS vrlo nizak, možete podesiti ovu vrijednost nižu da smanjite kašnjenje u početku emitiranja.

-keyint_min broj minimalni broj okvira između ključnih kadrova.

-vf "crop=w:h:x:y" izrezati video

-podešavanje nulte latencije"magična" opcija za smanjenje kašnjenja emitovanja. Nisam uspeo da saznam šta tačno radi...

-trajanje analize 0 onemogućuje analizu trajanja, što pomaže u smanjenju kašnjenja emitiranja

Pored gore navedenih audio opcija, možda ćete morati -akodek kopija u slučaju da vaš audio stream ne zahtijeva dodatnu konverziju u MP3/AAC.

Primjer: emitiranje s web kamere s malim kašnjenjem bez zvuka, nacrtajte trenutno vrijeme na vrhu slike

Ffmpeg -r 25 -rtbufsize 1000000k -analyzeduration 0 -s vga -copyts -f dshow -i video="Webcam C170" -vf "drawtext=fontfile=verdana.ttf: [email protected]:fontsize=48:box=1: [email protected]:text=%(localtime)" -s 320x240 -c:v libx264 -g 10 -keyint_min 1 -preset UltraFast -podešavanje nulte latencije -crf 25 -an -r 3 -f flv "rtmp://1.2.3.4:1935/ live/b.flv live=1"

Igrač na sajtu

Ovdje je sve jednostavno. Na primjer, instalirajte jedan od popularnih playera na svoju web stranicu

Video streaming uživo je zaista velika stvar. Šta može biti lakše od trenutnog pokretanja aplikacije za prijenos uživo na pametnom telefonu? Direktno će emitovati vas ili događaj koji se odvija oko vas... I dok strimujete video, vaši prijatelji ga gledaju sa svojih mobilnih uređaja. A sve što vam je potrebno da biste to ostvarili su kamera i ugrađeni mikrofon na vašem pametnom telefonu... Nije li ovo zabavno?

Prenos uživo je uveo drugačiji način povezivanja korisnika sa svojim prijateljima i za brendove da se uključe i dopru do svojih kupaca.

Ali kako vaše preduzeće ili startup može lako implementirati prijenos uživo za Android, a da pritom ne posveti mnogo resursa i sati rada programera za to? Koja tehnologija stoji iza prijenosa uživo i čini ga stvarnim?

Zadubimo se u temu kako bismo pronašli sveobuhvatne odgovore na ova pitanja i naučili više o rješenjima spremnim za korištenje koja olakšavaju i ubrzavaju proces dodavanja funkcije prijenosa videa uživo u vašu aplikaciju.

Koje su karakteristike live streaminga

Za razliku od formata videa na zahtjev koji pretpostavlja da korisnik može odabrati i gledati videozapise u bilo kojem trenutku, video prijenosi uživo vezani su za određeni trenutak u vrijeme i se prikazuju dok se snimaju.

A evo kako izgleda proces prijenosa uživo. Video i audio se prenose putem poruka koje razmjenjuju video plejer i medijski server. Video plejer se prvo povezuje sa medijskim serverom. Server prenosi dio videa na plejer. Ovaj video fragment odgovara trenutnom vremenu reprodukcije. Bafer od nekoliko sekundi osigurava reprodukciju videa bez kašnjenja ili prekida. Ovaj proces se stalno ponavlja cijelo vrijeme trajanja web emitiranja.

Ali live streaming nikada ne prenosi medijske datoteke u cjelini (na taj način štedi propusni opseg). Umjesto toga, omogućen je preko medijskih servera odgovornih za prijenos i striming digitalnog videa, zvuka i podataka. Prenos uživo pruža zaštitu izvornim video datotekama jer se ne mogu kopirati na računar gledaoca. Uz pomoć dodatnog softvera, prijenos uživo također podržava ćaskanje uživo i pitanja i odgovori.

Ne postoji samo jedan format za prijenos medijskih podataka. Umjesto toga, možete odabrati onaj koji najbolje odgovara vašim tehničkim potrebama.

Koje tehnologije za video streaming postoje?

Postoji više načina da omogućite prijenos uživo u vašoj aplikaciji. U nastavku ćemo ukratko pregledati postojeće tehnologije. Na ovaj način ćete moći razlikovati njihove ključne karakteristike i vrstu sadržaja za koji su najbolje napravljeni da isporuče:

  • RTMP protokol

Protokol za razmjenu poruka u realnom vremenu (ili samo RTMP) je razvijen za prijenos visokih performansi video i audio tokova i poruka podataka u realnom vremenu preko weba. Stream u realnom vremenu je omogućen uspostavljanjem dvosmjerne veze između Flash servera i Flash playera.

Adobe Flash Player je najčešći RTMP klijent koji podržava video i audio reprodukciju. Trenutno je dostupan kao open-source specifikacija za razvoj proizvoda i tehnologije koja isporučuje video strimove u formatima AMF, SWF, FLV i F4V (kompatibilan sa Adobe Flash Player formatima) i audio u AAC i MP3.

  • HTTP protokoli za streaming (HLS i HDS)

HLS format je baziran na MPEG2-TS i odnosi se na streaming na iOS uređaje. Nije dio HTML5. HLS kombinuje više tokova sa informacijama o metapodacima i lako se prebacuje između različitih medijskih podataka.

HDS koristi Adobeov format za video zapise i isporučuje fragmente MPEG-4 datoteka. MPEG format omogućava pohranjivanje metapodataka i audio i video tokova na različitim lokacijama. HTTP Dynamic Streaming je zgodna tehnologija za velike medijske biblioteke. Pomaže u smanjenju propusnosti, štedi trajanje baterije i pruža bolje korisničko iskustvo u poređenju sa HLS-om.

  • Silverlight protokol za striming

Ovaj format za video streaming se koristi za bogate internetske aplikacije kao što je Adobe Flash i za pokretanje filmova. Iako Microsoft Silverlight više ne radi u Chrome pretraživaču, dostupan je u Internet Explorer-u i Mozilla Firefox-u.

  • MPEG-DASH

MPEG-DASH pruža visokokvalitetan video streaming uživo i na zahtjev za medije koji dolaze sa HTTP servera. Format omogućava dodavanje oglasa između video segmenata za oba tipa streaminga. Medijski sadržaj se šifrira jednom i isporučuje na klijentski računar uz pomoć različitih DRM (Digital Rights Management) šema.

  • progresivni prijenos preuzimanja

Sa progresivnim preuzimanjem, medijski sadržaj se prenosi sa servera na klijentski računar putem HTTP protokola. Ne zahtijeva nikakav server za striming za hosting datoteka ili preuzimanje medijskog fajla da biste ga gledali. Progresivno preuzimanje omogućava reprodukciju videa prije potpunog preuzimanja videozapisa.

Porast 4K videa, visoka očekivanja korisnika u pogledu standarda kvaliteta i nesmetanog iskustva, razvoj novih efikasnih platformi i brža internetska veza čine zahtjeve za video streaming formatima sve strožijim. Bez obzira na različite dostupne tehnologije, fokusirat ćemo se na RTMP kao jedan od najrasprostranjenijih i omiljenih protokola za striming među programerima.

Dakle, šta je RTMP protokol i zašto je tako dobar

Kreiran od strane Macromedia (trenutno Adobe), Protokol za razmjenu poruka u realnom vremenu osigurava prilagodljivi prijenos brzine prijenosa (ABS). Kada se propusni opseg promijeni, kvalitet videa se automatski prilagođava njemu. RTMP je baziran na protokolu za kontrolu prijenosa (TCP) koji daje prioritet održavanju stabilne veze i niske latencije. Što se tiče vrste sadržaja, RTMP omogućava prijenos i unaprijed snimljenih i živih medijskih podataka i tekstualnih informacija.

Štaviše, RTMP se može koristiti ne samo za mobilni streaming. RTMP server može slati medijske podatke kako na web aplikacije, tako i na mobilne uređaje.

Najčešće je hvaljen zbog sljedećih prednosti koje pruža:

  • Posebno je optimiziran za prijenos uživo

Najveća prednost koju RTMP pruža je optimizacija prijenosa video i audio podataka. Za striming, koristi ekskluzivni 1935 port koji je pogodan za prijenos sadržaja niske latencije koji je od vitalnog značaja za live streaming i ne zahtijeva međuspremnik.

  • To je zrela tehnologija

RTMP se koristi za live streaming više od 10 godina. Za programera, postavljanje RTMP servera je lak zadatak. Za korisnika je istovremeno omogućen video streaming u različitim formatima. Primjenjuju se i sigurnosne funkcije kao što je potvrda igrača.

  • Možete pogledati bilo koji dio videa koji se emituje

Svi RTMP serveri omogućavaju snimanje dolaznih medijskih tokova i pružaju mogućnost prikazivanja video zapisa od početka. Korisnik može preskočiti dijelove videa do trenutnog trenutka u emisiji. Ova funkcija je posebno korisna za duge video zapise (više od 10 minuta), omogućavajući lako prebacivanje na bilo koji njihov dio.

  • To je najpopularniji protokol za streaming u realnom vremenu

RTMP je protokol neovisan o platformi koji ne zahtijeva ovisnost o hardveru i kompatibilan je sa Windows, Mac, Linux, Android, iOS i Windows mobile. Takođe se široko koristi u uređajima za igre, kao što su PlayStation, Xbox One i PS Vita.

Kako RTMP radi

Jednostavnim riječima, RTMP streaming se sastoji od sljedeća tri entiteta:

  • Klijent koji kreira medijski tok i emituje putem RTMP protokola na server. Kao klijentski „izdavači“, možete koristiti mnogo aplikacija na različitim platformama, kao što su plejeri zasnovani na FFMPEG-u, VLC Player, YouTube klijenti i AVLib rešenje.
  • Server koji upravlja dolaznim streamom i vrši obradu i snimanje po potrebi. Server takođe obezbeđuje emitovanje drugim klijentima. Među serverima, najbolje opcije bi bile Wowza Media Server, Flussonic Media Server i Simple RTMP Server.
  • Gledaoci predstavljaju svakog klijenta koji može gledati objavljene prijenose. Za prikaz takvih medijskih tokova možete koristiti bilo koji plejer koji podržava RTMP protokol. Dobra vijest je da skoro svi trenutno korišteni plejeri za sve postojeće platforme podržavaju RTMP streamove. Možete odabrati Flash Player, VLC ili Media Player Classic.

Najsloženije i najzahtjevnije su aplikacije za emiter. 'Tok emitiranja' uključuje obradu medija, kodiranje i daljnji streaming preko RTMP protokola na server. To u velikoj mjeri ovisi o platformi i hardveru i zahtijeva puno resursa podrške.

Kako bi se prenijelo što više podataka uz RTMP protokol, video i audio se dijele na fragmente različitih veličina. Zadane veličine su 64 bajta za audio i 128 bajta za video. Veličine video komada određene su formatom interakcije između korisnika i servera.

Fragmenti medija se zatim prepliću i multipleksiraju preko jedne veze dok su u korelaciji sa propusnim opsegom i latencijom kanala. Tok koji dolazi od emitera do servera sastoji se od malih blokova podataka koji uključuju različite vrste podataka (npr. video, audio servis, itd.). RTMP streaming može istovremeno prenijeti nekoliko različitih blokova podataka, čime se inkapsuliraju i video i audio i omogućavaju daljinski pozivi procedura.

Kada klijent otvori stream u RTMP playeru, zahtjev se šalje RTMP serveru. Inicijalizira se sesija i dolazi do razmjene podataka usluge. Jednom kada klijentski RTMP player primi neophodan dio paketa uslužnih podataka o tekućem toku, počinje dekodiranje, baferovanje i prikazivanje RTMP medijskog toka.

Uz RTMP, mediji ne moraju biti pohranjeni ni u jednom privremenom skladištu. I dalje se prenosi direktno između klijenata i servera. Ako kapacitet propusnog opsega dozvoljava, isti tok se usmjerava na brojne klijente koji šalju zahtjeve. Kapacitet striminga se poboljšava ako se nekoliko medijskih servera stavi u mrežu. Proces striminga se nastavlja sve dok server ili igrač ne završe sesiju.

Kako možete koristiti RTMP za prijenos videa u vašoj Android aplikaciji?

Možete gledati RTMP stream na bilo kojoj platformi uz pomoć bilo kojeg plejera koji podržava RTMP protokol. Za Android, najpopularniji plejeri treće strane su MX, VLC i BS Playeri, kao i bilo koji drugi plejer koji podržava FFMPEG. Za gledanje RTMP-a unutar aplikacije, programer mora integrirati bilo koju biblioteku igrača koja može čitati RTMP streamove. Ovo su ijkPlayer i VLC SDK-ovi.

Onix tim je dao svoj tehnološki doprinos pronalaženju jednostavnog i lijepog rješenja za video streaming i kreirao AVLib, Onix vlastitu eksternu biblioteku za Android RTMP streaming.

Pogledajmo kako to funkcionira s prijenosom uživo za Android aplikacije i kako je ideja nastala.

Kako AVLib rješava osnovni problem za Android RTMP streaming

https://rtmplib-android.com/

Naš Android tim programera došao je na ideju AVLib-a gotovo slučajno, ali sa odličnim ishodom i efektom. Dok su radili na zadatku dodavanja funkcije za emitovanje videa i zvuka za Android uređaje na RTMP servere, naišli su na ozbiljan problem. Zahtjevi kupca naveli su da bi aplikacija trebala moći prenositi video i audio podatke u svom maksimalnom kapacitetu putem Android kamere. Također je bilo potrebno omogućiti podršku za Android 4.0 kao minimalnu verziju, kako bi je mogli koristiti korisnici sa starijim mobilnim uređajima, te posjedovati niz praktičnih postavki upotrebljivosti za korisnika.

Onix tim je proveo duboko istraživanje i poređenje postojećih komercijalnih i open-source streaming biblioteka. Ali bez zadovoljavajućeg rezultata. Ispostavilo se da na tržištu ne postoji slično rješenje koje bi moglo u potpunosti zadovoljiti naše tehničke potrebe. Članovi tima su brzo došli do odluke o stvaranju vlastite eksterne biblioteke koja bi mogla podržati RTMP streaming za Android. A budući da se trenutno koristi veliki broj Android uređaja i verzija OS-a, ova biblioteka je napravljena da podrži potrebe za streamingom svih trenutnih Android korisnika.

Ali nikada nema smisla trošiti vrijeme na stvaranje jednokratnog alata koji rješava jedan određeni zadatak striktno u potrebnoj mjeri. Što ako se slična situacija ponovi? Zašto ne iskoristiti najbolje od onoga što tehnologija nudi i napraviti dobro testiran softverski proizvod?

Namjeravali smo razviti elegantno, fleksibilno i jednostavno rješenje, tako da bi bilo koji drugi Android tim ili programer koji je tražio RTMP biblioteku mogao lako da je integriše u aplikaciju bez potrebe da ponovo izmišlja točak. I uspjeli smo! AVLib kombinuje sve karakteristike koje smo očekivali i sveobuhvatno rešava osnovni zadatak video emitovanja.

Kako je AVLib razvijen i zašto je pouzdana RTMP biblioteka

AVLib je RTMP biblioteka na koju smo zaista ponosni. To je softverski proizvod koji rješava zahtjeve korisnika za live streaming bilo kojeg nivoa složenosti. To je alat spreman za korištenje za Android Studio koji je odmah integriran u mobilnu aplikaciju.

AVLib predstavlja praktično i stabilno rješenje koje se zasniva na sljedećim principima:

  • Jednostavna integracija sa aplikacijom

Za Android programera bi trebalo oko sat vremena dovršite proces integracije AVLib-a i dodavanje funkcije live streaminga u aplikaciju.

  • maksimalni kapacitet

Kako bismo implementirali RTMP biblioteku i omogućili joj potencijal visokog kapaciteta, naš tim je izabrao programski jezik C. Svaka pojedinačna funkcija uključena u AVLib, počevši od transportne logike, kodiranja, rada sa RTMP-om pa do obrade, izgrađena je koristeći čisti C.

  • UI prilagođena biblioteka

AVLib je fleksibilan i može se lako prilagoditi potrebama korisnika u dizajnu korisničkog sučelja (tj. dugmad, tekst) i video postavkama (tj. rezolucija kadra, zvuk, kvalitet kodeka, brzina prijenosa).

  • Podrška za sve postojeće tipove Android uređaja

Ova RTMP biblioteka dolazi kao jedna .aar datoteka bez zavisnosti. AVLib je testiran kako bi se uvjerio da je kompatibilan s različitim Android uređajima i da podržava Android OS verziju 4.0 i noviju.

Možete pronaći više detalja o funkcijama AVLib-a.

Proces razvoja AVLib-a bio je zaista pun izazova i zahtijevao je razmišljanje i trud našeg Android tima.

  • Streaming sa akcionih kamera? Da!

Jedna od osebujnih karakteristika AVLib-a je njegova sposobnost da prenosi video i audio sa akcionih kamera u hodu. Da biste omogućili ovu funkciju, potrebno je da radite istovremeno sa dva mrežna interfejsa sa strane modula u C. Zadatak je uspešno obavljen, ali je zahtevao detaljno istraživanje izvornog koda Android OS-a i kontinuirano otklanjanje grešaka.

  • Izgradnja životnog ciklusa emitovanja

Još jedan značajan izazov na koji smo naišli u fazi razvoja je omogućavanje nesmetanog rada sa kamerom i obrada životnog ciklusa na različitim uređajima. To je oduzimalo dosta vremena i zahtijevalo je mnogo pažljivog rada.