Streaming live EXOPlayer – implementare și sfaturi utile

Publicat: 2018-06-08

Redarea muzicii și a videoclipurilor cu ajutorul streamingului în direct este o activitate importantă pentru dispozitivele Android. YouTube este una dintre cele mai puternice platforme pentru partajarea conținutului video. Prin urmare, puteți achiziționa abonați pentru canalele YouTube pentru a intra în legătură cu mai multe persoane. În consecință, există numeroase posibilități pentru utilizatori de a face asta, majoritatea fiind open-source. Din cauza gamei lor mari, uneori este dificil să alegeți cel mai bun. Cu toate acestea, există o anumită modalitate de a oferi proiectului dumneavoastră cele mai bune facilități. În acest articol, vom împărtăși opinia noastră despre ce serviciu de jucător să alegeți și de ce. Permiteți-ne să vă prezentăm lumea posibilităților nelimitate de streaming, unde MediaPlayerul nativ rămâne unul dintre cele mai populare. Cu toate acestea, a apărut și un nou jucător de teren. ExoPlayer, cu transmisia în direct EXOPlayer, are o gamă mai largă de funcții și este gata să devină următorul tău favorit.

Imaginea principală de redare live a EXOPlayer

Scurtă prezentare generală

În 2014, implementarea bibliotecii Google ExoPlayer pentru un player video cu control personalizat care funcționează și „exo live stream” a fost o idee genială. MediaPlayer-ul nativ încorporat și-a dovedit inconsecvența într-o problemă atât de importantă precum comportamentul stabil și de încredere pe diferite dispozitive. Capriciosul său împreună cu greutatea codului și politica de performanță fără compromisuri l-au făcut cunoscut printre experți. Dimpotrivă, nou-lansat ExoPlayer, construit pe baza API-urilor media de nivel scăzut de la Android, a asigurat cele mai bune posibilități de streaming de muzică și video.

Primul și cel mai important motiv pentru lansarea sa a fost, desigur, implementarea HTTP Live Streaming (HLS) – un protocol pentru difuzarea media dezvoltat de Apple. În acesta, conținutul video constă din fragmente încărcate în timp real și cu rată adaptivă de transfer de biți. Acesta este modul în care ExoPlayer live streaming a devenit o alternativă complet personalizabilă la API-urile native MediaPlayer, oferind un API convenabil pentru streaming video și audio pe toate dispozitivele. Acum este folosit de mii de aplicații cu nume de celebrități precum BBC inclus.

Alternative (și de ce nu ar trebui să le alegeți)

Desigur, ExoPlayer are o serie de concurenți destul de de succes. Acestea includ astfel de servicii binecunoscute precum:

  • Vimeo

imagine în flux vimeo exo

  • Vitamio;

vitamio exoplayer hls imagine

  • LibVLC.

Cu toate acestea, acum se poate afirma cu siguranță că ExoPlayer este mult mai bun decât oricare dintre ele. În ciuda numărului impresionant de abonați, Vimeo nu are flexibilitate, deoarece conținutul este stocat exclusiv pe serverele sale, cu un link iframe furnizat pentru redare în WebView. Aceasta reduce semnificativ performanța aplicației. Bazat pe populara bibliotecă FFmpeg și având o mulțime de funcții utile, Vitamio a câștigat multă popularitate. Cu toate acestea, este un serviciu care nu este gratuit, așa că nu mulți oameni sunt pregătiți să-l folosească. LibVLC este destul de restrâns în funcționalitatea sa, deoarece se ocupă doar de proiecte cu suport NDK. De aceea, ExoPlayer este cel mai popular serviciu de acest tip în zilele noastre.

Ce este pozitiv?

Ca orice serviciu, ExoPlayer are avantajele și dezavantajele sale. Principalele sale avantaje includ:

  • implementarea exoplayer HLS cu toate caracteristicile sale avansate, cum ar fi gestionarea erorilor etc.;
  • pornire usoara;
  • Baza Java, care permite posibilitatea depanării cu succes;
  • varietate de formate;
  • suport deplin al criptării comune Widevine pentru Android 4.4 și versiuni ulterioare.
  • componente de control care sunt complet personalizabile;
  • o posibilitate de redare audio și video într-un flux;
  • suport pentru subtitrare;
  • Compatibilitate Google Cast SDK, care îi permite să lucreze cu TV sau cu sistemul de sunet;
  • Utilizarea MediaSource.

Acesta din urmă permite configurarea nu numai a fluxului HLS exoplayer, ci și a DASH (DashMediaSource) și SmoothStreaming (SsMediaSource). De asemenea, permite astfel de componente de streaming live EXOPlayer ca subtitrări laterale, precum și redarea secvențelor video. O altă caracteristică interesantă pe care o posedă este PlayerNotificationManager recent lansat, care permite utilizatorului să primească notificări de redare pentru a controla fluxul exo video sau audio. Cu ele, puteți înainte, derula înapoi, trece la următoarea piesă etc. Pentru a crea MediaSource pentru streaming video HLS, trebuie să efectuați astfel de acțiuni simple:


fun getHlsMediaSource(hls: String): MediaSource {
val bandwidthMeter = DefaultBandwidthMeter()
val applicationName = Util.getUserAgent(context, APPLICATION_NAME)
val dataSourceFactory = DefaultDataSourceFactory (context, applicationName, bandwidthMeter)
val factory = HlsMediaSource.Factory(dataSourceFactory)
return factory.createMediaSource(Uri.parse(hls))
}


În plus, biblioteca de streaming live EXOPlayer are o serie de alte capacități fantastice, cum ar fi MergingMediaSource, ConcatenatingMediaSource, TrackSelector și LoopingMediaSource. Toate garantează performanța perfectă a unui sistem complex de posibilități de streaming Exo. ExoPlayer are o serie de aceste componente în mod implicit pentru funcționarea de bază. Cu toate acestea, poate folosi și numeroase implementări personalizate pentru performanțe non-standard.

Una peste alta, exo live stream se ocupă de toate sarcinile importante, cum ar fi streaming video cu identificarea erorilor asociate cu sursa de conținut, adăugarea unui player video sau audio care acceptă cea mai mare parte a formatelor moderne la aplicația dvs. mobilă sau TV într-un timp scurt etc.

Ce este negativul?

Desigur, nimic nu este perfect. Streamingul live EXOPlayer, în ciuda modernității și a o serie de caracteristici interesante, nu face excepție de la asta. Principalele sale dezavantaje sunt următoarele:

  • limitări de proiectare;
  • lipsa suportului pentru versiuni anterioare de 16 Android;
  • o imposibilitate a performanței de recreere a jucătorului în cazul blocării ecranului;
  • fără întoarcere înapoi la ultima poziţie vizualizată.

Soluția de lucru pentru ultimele provocări arată astfel:


suprascrie distracție la Pauză() {

super .onPause()

releasePlayer()

}


eliberare distracție privatăPlayer() {

if ( simpleExoPlayer != null ) {

resumePosition = Math.max(0, simpleExoPlayer !!. contentPosition )

shouldAutoPlay = simpleExoPlayer !!. playWhenReady

simpleExoPlayer !!.release()

simpleExoPlayer = nul

}

}


suprascrie distracție la reluare() {

super .onResume()

initPlayer()

}


distracție privată initPlayer() {

simpleExoPlayer = streamConfigurator .createExoPlayer()

simpleExoPlayerView. useController = adevărat

simpleExoPlayerView. player = simpleExoPlayer

simpleExoPlayer ?.seekTo( resumePosition )

}


Cu toate acestea, aceste probleme pot fi atribuite particularităților arhitecturii Android și hyperthreading-ului acesteia, dezvoltatorii Android ar putea avea un timp oarecum greu. În afară de asta, streamingul live ExoPlayer este o alegere excelentă.

Algoritmul de transmitere în direct EXOPlayer

Experții susțin că ExoPlayer este cu adevărat la îndemână și ușor de utilizat și suntem total de acord cu acest gând. Pentru a începe lucrul cu acesta, trebuie să efectuați doar câțiva pași simpli. Ei includ:

  • adăugarea ExoPlayer la proiectul dvs. într-o formă de dependență. Adăugarea acestuia la fișierul modulului de aplicație va asigura funcționarea sa pentru biblioteca completă de streaming live ExoPlayer;
  • crearea unei instanțe SimpleExoPlayer (utilizați ExoPlayerFactory pentru asta);
  • atașarea playerului la vizualizare atât pentru ieșire video, cât și pentru intrare ușoară de utilizator;
  • pregătirea MediaSource a jucătorului pentru a juca.
  • eliberarea jucătorului (cu un cod special).

Concluzii

Streamingul live ExoPlayer este o soluție open source gata făcută care permite rezolvarea multor probleme problematice pentru alte biblioteci. După cum puteți vedea, lista sa de avantaje și caracteristici pozitive este mult mai lungă decât enumerarea celor negative. Probabil din acest motiv, este folosit în marea majoritate a aplicațiilor Android și este pe deplin acceptat de Google. În comparație cu principalele sale alternative, este mult mai flexibil și mai simplu. Echipa noastră vă sfătuiește să începeți să-l utilizați, deoarece caracteristicile sale interesante vă pot face un piure uriaș.