EXOPlayer Live Streaming – implementacja i przydatne wskazówki

Opublikowany: 2018-06-08

Odtwarzanie muzyki i filmów za pomocą transmisji na żywo to ważna czynność dla urządzeń z systemem Android. YouTube to jedna z najpotężniejszych platform do udostępniania treści wideo. Dzięki temu możesz kupować subskrybentów kanałów YouTube, aby łączyć się z większą liczbą osób. W związku z tym istnieje wiele możliwości dla użytkowników, z których większość to open source. Ze względu na ich duży asortyment, czasem trudno jest wybrać te najlepsze. Istnieje jednak pewien sposób na zapewnienie Twojemu projektowi najlepszych udogodnień. W tym artykule podzielimy się naszą opinią na temat tego, jaką usługę gracza wybrać i dlaczego. Pozwól nam wprowadzić Cię w świat nieograniczonych możliwości przesyłania strumieniowego, w którym natywny MediaPlayer pozostaje jednym z najpopularniejszych. Pojawił się jednak również nowy zawodnik terenowy. ExoPlayer, dzięki strumieniowaniu na żywo EXOPlayer, ma szerszy zakres funkcji i jest gotowy, aby stać się Twoim kolejnym ulubionym.

Główny obraz do strumieniowego przesyłania na żywo EXOPlayer

Krótki przegląd

W 2014 roku wdrożenie biblioteki Google ExoPlayer dla odtwarzacza wideo z obsługą niestandardowego sterowania i „exo live stream” było genialnym pomysłem. Wbudowany natywny MediaPlayer udowodnił swoją niespójność w tak ważnej kwestii, jak stabilne i niezawodne zachowanie na różnych urządzeniach. Jego kapryśność w połączeniu z ciężkością kodu i bezkompromisową polityką wydajności sprawiły, że zyskał sławę wśród ekspertów. Wręcz przeciwnie, nowo wydany ExoPlayer, zbudowany na bazie niskopoziomowych interfejsów API systemu Android, zapewniał najlepsze możliwości strumieniowania muzyki i wideo.

Pierwszym i najważniejszym powodem jego wydania była oczywiście implementacja HTTP Live Streaming (HLS) – opracowanego przez Apple protokołu do transmisji mediów. W nim treść wideo składa się z fragmentów ładowanych w czasie rzeczywistym i z adaptacyjną szybkością transmisji bitów. W ten sposób strumieniowanie na żywo ExoPlayer stało się w pełni konfigurowalną alternatywą dla natywnych interfejsów API MediaPlayer, zapewniając wygodny interfejs API do przesyłania strumieniowego wideo i audio na wszystkie urządzenia. Teraz jest używany przez tysiące aplikacji z takimi nazwiskami jak BBC.

Alternatywy (i dlaczego nie powinieneś ich wybierać)

Oczywiście ExoPlayer ma wielu dość udanych konkurentów. Należą do nich tak znane usługi jak:

  • Vimeo

obraz strumieniowy vimeo exo

  • Vitamio;

vitamio exoplayer hls obraz

  • LibVLC.

Jednak teraz można śmiało stwierdzić, że ExoPlayer jest znacznie lepszy niż którykolwiek z nich. Pomimo imponującej liczby subskrybentów, Vimeo brakuje elastyczności, ponieważ treści są przechowywane wyłącznie na jego serwerach, z łączem iframe do odtwarzania w WebView. To znacznie zmniejsza wydajność aplikacji. Opierając się na popularnej bibliotece FFmpeg i posiadając wiele przydatnych funkcji, Vitamio zyskał dużą popularność. Jest to jednak usługa niedarmowa, więc niewiele osób jest gotowych z niej korzystać. LibVLC jest dość ograniczona w swojej funkcjonalności, ponieważ obsługuje tylko projekty z obsługą NDK. Właśnie dlatego ExoPlayer jest obecnie najpopularniejszą usługą tego typu.

Co jest pozytywne?

Jak każda usługa, ExoPlayer ma swoje zalety i wady. Jego główne zalety to:

  • implementacja explayera HLS ze wszystkimi jego zaawansowanymi funkcjami, takimi jak obsługa błędów itp.;
  • łatwy start;
  • baza Java, która daje możliwość udanego debugowania;
  • różnorodność formatów;
  • pełna obsługa wspólnego szyfrowania Widevine dla Androida 4.4 i nowszych.
  • elementy sterujące, które są w pełni konfigurowalne;
  • możliwość odtwarzania audio i wideo w strumieniu;
  • obsługa napisów;
  • obsługa Google Cast SDK, która umożliwia pracę z telewizorem lub systemem dźwiękowym;
  • Wykorzystanie MediaSource.

Ta ostatnia umożliwia konfigurację nie tylko strumienia HLS egzoplayera, ale także DASH (DashMediaSource) i SmoothStreaming (SsMediaSource). Umożliwia również takie komponenty EXOPlayer do przesyłania strumieniowego na żywo, jak napisy ładowane z boku, a także odtwarzanie sekwencji wideo. Jeszcze jedną ekscytującą funkcją, jaką posiada, jest nowo wydany PlayerNotificationManager, który umożliwia użytkownikowi otrzymywanie powiadomień o odtwarzaniu w celu kontrolowania przesyłania strumieniowego wideo lub audio. Dzięki nim możesz płynnie przewijać do przodu, do tyłu, przejść do następnego utworu itp. Aby utworzyć MediaSource dla strumieniowego przesyłania wideo HLS, musisz wykonać takie proste czynności:


fun getHlsMediaSource(hls: String): MediaSource {
val miernik przepustowości = Domyślny miernik pasma()
val nazwa_aplikacji = Util.getUserAgent(kontekst, NAZWA_APLIKACJI)
val dataSourceFactory = DefaultDataSourceFactory (kontekst, nazwa aplikacji, licznik przepustowości)
fabryka val = HlsMediaSource.Factory(dataSourceFactory)
return factory.createMediaSource(Uri.parse(hls))
}


Co więcej, biblioteka strumieniowania na żywo EXOPlayer ma szereg innych fantastycznych możliwości, takich jak MergingMediaSource, ConcatenatingMediaSource, TrackSelector i LoopingMediaSource. Wszystkie one gwarantują doskonałą wydajność złożonego systemu możliwości przesyłania strumieniowego Exo. ExoPlayer ma domyślnie szereg tych komponentów do podstawowego funkcjonowania. Jednak może również korzystać z wielu niestandardowych implementacji w celu uzyskania niestandardowej wydajności.

Podsumowując, exo live stream obsługuje wszystkie ważne zadania, takie jak przesyłanie strumieniowe wideo z identyfikacją błędów związanych ze źródłem treści, dodawanie odtwarzacza wideo lub audio, który obsługuje większość nowoczesnych formatów do aplikacji mobilnej lub telewizyjnej w jednym krótki czas itp.

Co jest negatywne?

Oczywiście nic nie jest idealne. Streaming na żywo EXOPlayer, pomimo swojej nowoczesności i wielu ekscytujących funkcji, nie jest wyjątkiem. Jego główne wady są następujące:

  • ograniczenia projektowe;
  • brak wsparcia dla starszych niż 16 wersji Androida;
  • niemożność rekreacji gracza w przypadku blokady ekranu;
  • brak przewijania wstecz do ostatnio oglądanej pozycji.

Rozwiązanie robocze dla tych ostatnich wyzwań wygląda tak:


zastąp zabawę onPause() {

super .onPause()

wypuścić gracza()

}


prywatna zabawa releasePlayer() {

if ( simpleExoPlayer != null ) {

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

powinienAutoodtwarzanie = simpleExoPlayer !!. odtwórz, gdy gotowe

simpleExoPlayer !!.release()

simpleExoPlayer = null

}

}


zastąp zabawę przy wznowieniu() {

super .wznawianiu()

initPlayer()

}


prywatna zabawa initPlayer() {

simpleExoPlayer = streamConfigurator .createExoPlayer()

prostyExoPlayerView. useController = prawda

prostyExoPlayerView. player = prostyExoPlayer

simpleExoPlayer ?.seekTo( resumePosition )

}


Jednak problemy te można przypisać osobliwościom architektury Androida i jej hiperwątkowości, a programiści Androida mogą mieć nieco trudności. Poza tym transmisje na żywo ExoPlayer to świetny wybór.

Algorytm EXOPlayer Live Streaming

Eksperci twierdzą, że ExoPlayer jest naprawdę poręczny i łatwy w użyciu, a my całkowicie zgadzamy się z tą myślą. Aby rozpocząć z nim pracę, wystarczy wykonać kilka prostych kroków. Zawierają:

  • dodanie ExoPlayera do projektu w formie zależności. Dodanie go do pliku modułu aplikacji zapewni jego działanie dla pełnej biblioteki strumieniowania na żywo ExoPlayer;
  • tworzenie instancji SimpleExoPlayer (użyj do tego ExoPlayerFactory);
  • dołączenie odtwarzacza do widoku zarówno dla wyjścia wideo, jak i łatwego wprowadzania danych przez użytkownika;
  • przygotowanie odtwarzacza MediaSource do gry.
  • zwolnienie gracza (ze specjalnym kodem).

Wnioski

Transmisja na żywo ExoPlayer to gotowe rozwiązanie open source, które pozwala rozwiązać wiele problemów problematycznych dla innych bibliotek. Jak widać, lista jego zalet i cech pozytywnych jest znacznie dłuższa niż wyliczenie tych negatywnych. Zapewne z tego powodu jest używany w zdecydowanej większości aplikacji na Androida i jest w pełni obsługiwany przez Google. W porównaniu z głównymi alternatywami jest znacznie bardziej elastyczny i prostszy. Nasz zespół radzi, abyś zaczął z niego korzystać, ponieważ jego ekscytujące funkcje mogą zrobić na Tobie ogromne wrażenie.