Streaming Video i Android Apps

Android-plattformen inneholder biblioteker du kan bruke til å streame mediefiler, for eksempel fjernvideoer, og presentere dem for avspilling i appene dine. I denne veiledningen vil vi streame en videofil, vise den ved hjelp av VideoView komponent sammen med a MediaController motsette seg at brukeren kontrollerer avspillingen.

Vi vil også kort gå gjennom prosessen med å presentere videoen ved hjelp av Mediaspiller klasse. Hvis du har fullført serien om å lage en musikkspiller for Android, kan du bruke det du lærer i denne opplæringen for å forbedre den ytterligere. Du bør kunne fullføre denne opplæringen hvis du allerede har utviklet minst noen Android-apper.

Premium-alternativ

Hvis du vil ha en ferdig løsning, sjekk ut YoVideo, en Android-appmal for å skape en vakker mobilvideospiller for Android-smarttelefonen..

Brukere kan se videoer, følge og dele med vennene sine på Facebook. Ved å bruke denne programmalen sparer du penger og tid når du lager et videodelingsprogram.

YoVideo på Envato Market

Eller du kan ansette en Android-utvikler for å skape en tilpasset løsning for deg. Ellers les videre for instruksjonene om hvordan du gjør det selv.

1. Lag en ny app

Trinn 1

Du kan bruke koden i denne opplæringen til å forbedre en eksisterende app du jobber med, eller du kan opprette en ny app nå i Eclipse eller Android Studio. Opprett et nytt Android-prosjekt, gi det et navn etter eget valg, konfigurer detaljene, og gi det en første hoved Aktivitet klasse og layout.

Steg 2

La oss først konfigurere prosjektets manifest for streaming media. Åpne manifestfilen til prosjektet ditt og bytt til XML-redigering i IDE-en. For streaming media trenger du internettilgang, så legg til følgende tillatelse inne i manifest element:

2. Legg til VideoView

Trinn 1

Android-plattformen gir VideoView klassen der du kan spille av videofiler. La oss legge til en til hovedlayoutfilen:

  

Endre overordnet layout for å passe din egen app om nødvendig. Vi gir VideoView eksempel en id attributt slik at vi senere kan referere til det. Du må kanskje justere de andre layoutegenskapene for ditt eget design.

Steg 2

La oss nå hente en referanse til VideoView forekomst i kode. Åpne appens hoved Aktivitet klasse og legg til følgende tilleggsimport:

importer android.net.Uri; importer android.widget.MediaController; importer android.widget.VideoView; 

Din Aktivitet klassen bør allerede inneholde onCreate Metode der innholdsvisningen er innstilt:

@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);  

Etter setContentView linje, la oss få en referanse til VideoView forekommer som følger, ved hjelp av id vi setter i XML-oppsettet:

VideoView vidView = (VideoView) findViewById (R.id.myVideo);

3. Stream en videofil

Trinn 1

Nå kan vi streame en videofil til appen. Klargjør URI for sluttpunktet som følger:

String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4"; Uri vidUri = Uri.parse (vidAddress); 

Du må selvfølgelig bruke fjernadressen til videofilen du vil streame. Eksemplet her er en offentlig domene videofil vert på Internett-arkivet. Vi analyserer adressestrengen som en URI, slik at vi kan sende den til VideoView gjenstand:

vidView.setVideoURI (vidUri); 

Nå kan du bare starte avspillingen:

vidView.start (); 

Android-operativsystemet støtter en rekke video- og medieformater, hvor hver enhet ofte støtter flere formater på toppen av dette.

Som du kan se i utviklerveiledningen, støttes videofilformater som 3GP, MP4, WEBM og MKV, avhengig av formatet som brukes og på hvilket plattformnivå brukeren har installert.

Lydfilformater du kan forvente innebygd støtte for, inkluderer MP3, MID, OGG og WAV. Du kan streame media på Android over RTSP, HTTP og HTTPS (fra Android 3.1).

4. Legg til avspillingskontroller

Trinn 1

Vi har implementert videoavspilling, men brukeren vil forvente og være vant til å ha kontroll over det. Igjen, tilbyr Android-plattformen ressurser for å håndtere dette ved hjelp av kjent interaksjon via MediaController klasse.

I din Aktivitet klassens onCreate metode, før linjen du ringer til startVideoView, opprett en forekomst av klassen:

MediaController vidControl = ny MediaController (dette); 

Deretter sett den til å bruke VideoView eksempel som anker:

vidControl.setAnchorView (vidView); 

Og til slutt, sett det som mediekontrolleren for VideoView gjenstand:

vidView.setMediaController (vidControl); 

Når du kjører appen nå, skal brukeren kunne styre avspillingen av streamingvideoen, inkludert hurtigspoling og spoling av knapper, en avspilling / pause-knapp og en søkestangskontroll.

Søkebjelkens kontroll er ledsaget av lengden på mediefilen til høyre og gjeldende avspillingsposisjon til venstre. I tillegg til å kunne trykke langs søylinjen for å hoppe til en posisjon i filen, er streamingstatus angitt med samme type skjerm som brukeren vil være vant til fra nettsteder og apper som YouTube.

Som du vil se når du kjører appen, er standard oppførsel at kontrollene forsvinner etter noen få øyeblikk, dukker opp igjen når brukeren berører skjermen. Du kan konfigurere oppførselen til MediaController objekt på ulike måter. Se serien om å lage en musikkavspillingsapp for Android for et eksempel på hvordan du gjør dette. Du kan også forbedre medieavspillingen ved å implementere ulike lyttere for å konfigurere appens oppførsel.

5. Bruke Mediaspiller

Trinn 1

Før vi er ferdige, la oss gjennomgå en alternativ tilnærming for streaming av video ved hjelp av Mediaspiller klassen, siden vi brukte den i serien om å skape en musikkspiller. Du kan streame media, inkludert video, til en Mediaspiller objekt ved hjelp av en overflatevisning. For eksempel kan du bruke følgende layout:

  

Vi vil referere til SurfaceView i gjennomføringen av Aktivitet klasse.

Steg 2

I din Aktivitet klasse, legg til følgende grensesnitt:

offentlig klasse MainActivity utvider Aktivitetsredskaper SurfaceHolder.Callback, OnPreparedListener 

Din IDE skal be deg om å legge til disse ikke-implementerte metodene:

@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Auto-generert metode stub @Override public void surfaceCreated (SurfaceHolder arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0 ) // TODO automatisk generert metode stub @Override public void onPrepared (MediaPlayer mp) // start avspilling 

Vi legger til i surfaceCreated og onPrepared fremgangsmåter.

Trinn 3

For å implementere avspilling, legg til følgende instansvariabler i klassen:

privat MediaPlayer mediaPlayer; privat overflatehodder vidholder; privat SurfaceView vidSurface; String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";

I Aktivitet's onCreate metode, kan du da begynne å instantiere disse variablene ved hjelp av SurfaceView Motta deg lagt til i oppsettet:

vidSurface = (SurfaceView) findViewById (R.id.surfView); vidHolder = vidSurface.getHolder (); vidHolder.addCallback (this); 

Trinn 4

I surfaceCreated metode, sett opp medieavspillingsressursene dine:

prøv mediaPlayer = new MediaPlayer (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (this); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC);  fangst (unntak e) e.printStackTrace ();  

Til slutt, i onPrepared metode, start avspilling:

mediaPlayer.start (); 

Videoen din skal nå spille i Mediaspiller eksempel når du kjører appen.

Konklusjon

I denne opplæringen har vi skissert grunnleggende om streaming video på Android ved hjelp av VideoView og Mediaspiller klasser. Du kan legge til mange forbedringer av koden vi implementerte her, for eksempel ved å bygge video eller streaming media støtte i musikkavspilleren appen vi opprettet. Du kan også ønske å sjekke ut tilknyttede ressurser til Android, for eksempel YouTube Android Player API.