Streaming video i Android Apps

Android-plattformen tillhandahåller bibliotek som du kan använda för att strömma mediefiler, t.ex. fjärrvideor och presentera dem för uppspelning i dina appar. I denna handledning strömmar vi en videofil och visar den med hjälp av VideoView komponent tillsammans med a MediaController motsätta sig att låta användaren styra uppspelningen.

Vi kommer också att kort genomgå processen med att presentera videon med hjälp av Mediaspelare klass. Om du har slutfört serien om att skapa en musikspelare för Android kan du använda det du lär dig i den här handledningen för att ytterligare förbättra den. Du borde kunna slutföra denna handledning om du redan har utvecklat åtminstone några Android-appar.

Premium alternativ

Om du vill ha en färdig lösning, kolla YoVideo, en Android app mall för att skapa en vacker mobil videospelare för Android-smartphone.

Användare kan visa videoklipp, följa och dela med sina vänner på Facebook. Med hjälp av denna programmall sparar du pengar och tid när du skapar en videodelningsprogram.

YoVideo på Envato Market

Eller du kan anställa en Android-utvecklare för att skapa en anpassad lösning för dig. I annat fall läs vidare för instruktionerna om hur du gör det själv.

1. Skapa en ny app

Steg 1

Du kan använda koden i den här handledningen för att förbättra en befintlig app du jobbar med eller du kan skapa en ny app nu i Eclipse eller Android Studio. Skapa ett nytt Android-projekt, ge det ett namn du väljer, konfigurera detaljerna och ge den en första huvud Aktivitet klass och layout.

Steg 2

Låt oss först konfigurera projektets manifest för streaming media. Öppna manifestfilen för ditt projekt och växla till XML-redigering i din IDE. För streaming media behöver du tillgång till internet, så lägg till följande behörighet inom manifestera element:

2. Lägg till VideoView

Steg 1

Android-plattformen tillhandahåller VideoView klass där du kan spela videofiler. Låt oss lägga till en till huvudlayoutfilen:

  

Ändra moderlayouten så att den passar din egen app om det behövs. Vi ger VideoView exempelvis en id attribut så att vi senare kan hänvisa till det. Du kan behöva justera de andra layoutegenskaperna för din egen design.

Steg 2

Låt oss nu hämta en referens till VideoView exempel i kod. Öppna appens huvud Aktivitet klass och lägg till följande ytterligare import:

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

Din Aktivitet klassen bör redan innehålla onCreate Metod där innehållsvisningen är inställd:

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

Efter setContentView linje, låt oss få en hänvisning till VideoView Exempel på följande, med hjälp av id vi sätter i XML-layout:

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

3. Ström en videofil

Steg 1

Nu kan vi strömma en videofil till appen. Förbered URI för slutpunkten enligt följande:

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åste naturligtvis använda fjärradressen för videofilen du vill strömma. Exemplet här är en public domain-videofil värd på Internet Archive. Vi analyserar adresssträngen som en URI så att vi kan skicka den till VideoView objekt:

vidView.setVideoURI (vidUri); 

Nu kan du enkelt starta uppspelningen:

vidView.start (); 

Android-operativsystemet stöder en rad video- och medieformat, där varje enhet ofta stöder ytterligare format ovanpå detta.

Som du kan se i utvecklarhandboken stöds videofilformat som 3GP, MP4, WEBM och MKV, beroende på vilket format som används och på vilken plattformsnivå användaren har installerat.

Ljudfilformat du kan förvänta dig inbyggt stöd för inkluderar MP3, MID, OGG och WAV. Du kan strömma media på Android via RTSP, HTTP och HTTPS (från Android 3.1).

4. Lägg till uppspelningskontroller

Steg 1

Vi har genomfört videouppspelning, men användaren kommer att förvänta sig och vara van att ha kontroll över det. Återigen ger Android-plattformen resurser för hantering av detta med hjälp av välbekant interaktion via MediaController klass.

I din Aktivitet klassens onCreate metod, före linjen som du ringer till StartVideoView, skapa en förekomst av klassen:

MediaController vidControl = ny MediaController (this); 

Ställ sedan in den för att använda VideoView Exempel som sitt ankar:

vidControl.setAnchorView (vidView); 

Och slutligen, sätt det som media controller för VideoView objekt:

vidView.setMediaController (vidControl); 

När du kör appen nu ska användaren kunna styra uppspelning av strömmande video, inklusive snabbspolning och spolningsknappar, en uppspelnings- / pausknapp och en sökbar kontroll.

Styrningen för sökfältet åtföljs av längden på mediefilen till höger och nuvarande uppspelningsläge till vänster. Förutom att kunna klicka längs sökfältet för att hoppa till en position i filen, visas strömmarstatusen med samma typ av visning som användaren kommer att vara van vid från webbplatser och appar som YouTube.

Som du kommer att se när du kör appen är standardbeteendet att kontrollerna försvinna efter några ögonblick, återkommer när användaren rör på skärmen. Du kan konfigurera beteendet hos MediaController objekt på olika sätt. Se serien om att skapa en musikspelarapp för Android för ett exempel på hur du gör det här. Du kan också förbättra mediavisning genom att implementera olika lyssnare för att konfigurera appens beteende.

5. Användning Mediaspelare

Steg 1

Innan vi avslutar, låt oss springa igenom ett alternativt sätt att spela upp video med hjälp av Mediaspelare klass, eftersom vi använde den i serien om att skapa en musikspelare. Du kan strömma media, inklusive video, till en Mediaspelare objekt med en ytvy. Du kan till exempel använda följande layout:

  

Vi hänvisar till SurfaceView i genomförandet av Aktivitet klass.

Steg 2

I din Aktivitet klass, lägg till följande gränssnitt:

offentliga klass MainActivity utökar Aktivitetsredskap SurfaceHolder.Callback, OnPreparedListener 

Din IDE bör uppmana dig att lägga till dessa oanvända metoder:

@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Automatisk genererad metodstub @Override public void surfaceCreated (SurfaceHolder arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0 ) // TODO automatiskt genererad metodstub @Override public void onPrepared (MediaPlayer mp) // starta uppspelning 

Vi lägger till i surfaceCreated och onPrepared metoder.

Steg 3

För att implementera uppspelning lägger du till följande instansvariabler i klassen:

privat MediaPlayer mediaPlayer; Privat SurfaceHolder 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 metod kan du börja omedelbarera dessa variabler med hjälp av SurfaceView objekt du lägger till i layouten:

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

Steg 4

I surfaceCreated metod, sätt upp dina media-uppspelningsresurser:

försök mediaPlayer = nytt MediaPlayer (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (detta); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC);  fångst (Undantag e) e.printStackTrace ();  

Slutligen, i onPrepared metod, starta uppspelning:

mediaPlayer.start (); 

Din video ska nu spelas i Mediaspelare exempel när du kör appen.

Slutsats

I den här handledningen har vi redogjort för grunderna för streaming av video på Android med VideoView och Mediaspelare klasser. Du kan lägga till många förbättringar av koden som vi implementerade här, till exempel genom att skapa video eller streaming media support i den musikspelare app som vi skapade. Du kan också vilja kolla associerade resurser till Android, t.ex. YouTube Android Player API.