Video-Streaming in Android-Apps

Die Android-Plattform bietet Bibliotheken, die Sie zum Streamen von Mediendateien verwenden können, z. B. Remote-Videos, und diese zur Wiedergabe in Ihren Apps präsentieren. In diesem Lernprogramm streamen wir eine Videodatei und zeigen sie mit der VideoView Komponente zusammen mit einem MediaController Objekt, damit der Benutzer die Wiedergabe steuern kann.

Wir werden auch kurz den Prozess der Präsentation des Videos mit der Media Player Klasse. Wenn Sie die Serie zum Erstellen eines Musik-Players für Android abgeschlossen haben, können Sie das in diesem Lernprogramm erlernte Wissen verwenden, um es weiter zu verbessern. Sie sollten dieses Lernprogramm abschließen können, wenn Sie bereits einige Android-Apps entwickelt haben.

Premium Option

Wenn Sie eine vorgefertigte Lösung wünschen, besuchen Sie YoVideo, eine Android-App-Vorlage zum Erstellen eines schönen mobilen Videoplayers für Android-Smartphones.

Benutzer können Videos auf Facebook anzeigen, verfolgen und mit ihren Freunden teilen. Wenn Sie diese Anwendungsvorlage verwenden, sparen Sie Zeit und Geld bei der Erstellung einer Video-Sharing-Anwendung.

YoVideo auf dem Envato Market

Oder Sie könnten einen Android-Entwickler beauftragen, um eine individuelle Lösung für Sie zu erstellen. Ansonsten lesen Sie die Anweisungen, wie Sie es selbst machen können.

1. Erstellen Sie eine neue App

Schritt 1

Sie können den Code in diesem Lernprogramm verwenden, um eine vorhandene Anwendung zu verbessern, an der Sie gerade arbeiten, oder Sie können jetzt eine neue Anwendung in Eclipse oder Android Studio erstellen. Erstellen Sie ein neues Android-Projekt, geben Sie ihm einen Namen Ihrer Wahl, konfigurieren Sie die Details und geben Sie ihm ein erstes Hauptfenster Aktivität Klasse und Layout.

Schritt 2

Zuerst konfigurieren wir das Manifest des Projekts für Streaming Media. Öffnen Sie die Manifestdatei Ihres Projekts und wechseln Sie in der IDE zur XML-Bearbeitung. Für das Streaming von Medien benötigen Sie einen Internetzugang. Fügen Sie daher die folgende Berechtigung in das Feld ein Manifest Element:

2. Hinzufügen VideoView

Schritt 1

Die Android-Plattform bietet die VideoView Klasse, in der Sie Videodateien abspielen können. Fügen wir der Hauptlayoutdatei eine hinzu:

  

Ändern Sie ggf. das übergeordnete Layout an Ihre eigene App. Wir geben die VideoView Beispiel ein Ich würde Attribut, damit wir später darauf zurückgreifen können. Möglicherweise müssen Sie die anderen Layout-Eigenschaften für Ihr eigenes Design anpassen.

Schritt 2

Lassen Sie uns jetzt einen Verweis auf die VideoView Instanz im Code. Öffnen Sie das Hauptmenü Ihrer App Aktivität Klasse und fügen Sie die folgenden zusätzlichen Importe hinzu:

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

Ihre Aktivität Klasse sollte bereits enthalten onCreate Methode, in der die Inhaltsansicht festgelegt ist:

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

Nach dem setContentView Zeile, lassen Sie uns einen Verweis auf die VideoView Beispiel wie folgt mit der Ich würde wir setzen im XML-Layout:

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

3. Streamen Sie eine Videodatei

Schritt 1

Jetzt können wir eine Videodatei in die App streamen. Bereiten Sie den URI für den Endpunkt wie folgt vor:

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

Sie müssen natürlich die Remote-Adresse für die Videodatei verwenden, die Sie streamen möchten. Das Beispiel hier ist eine im Internetarchiv gehostete Public Domain-Videodatei. Wir analysieren die Adresszeichenfolge als URI, damit wir sie an den übergeben können VideoView Objekt:

vidView.setVideoURI (vidUri); 

Jetzt können Sie einfach die Wiedergabe starten:

vidView.start (); 

Das Android-Betriebssystem unterstützt eine Reihe von Video- und Medienformaten, wobei jedes Gerät häufig zusätzliche Formate unterstützt.

Wie Sie dem Entwicklerhandbuch entnehmen können, umfassen die unterstützten Videodateiformate 3GP, MP4, WEBM und MKV, je nach verwendetem Format und auf welcher Plattformebene der Benutzer installiert hat.

Audio-Dateiformate, von denen Sie erwarten können, dass sie MP3, MID, OGG und WAV unterstützen. Sie können Medien auf Android über RTSP, HTTP und HTTPS streamen (von Android 3.1)..

4. Fügen Sie Wiedergabesteuerungen hinzu

Schritt 1

Wir haben Videowiedergabe implementiert, aber der Benutzer erwartet und ist daran gewöhnt, die Kontrolle darüber zu haben. Die Android-Plattform stellt wiederum Ressourcen zur Verfügung, um dies unter Verwendung vertrauter Interaktion über die MediaController Klasse.

In deiner Aktivität Klasse onCreate Methode vor der Zeile, in der Sie anrufen Start auf der VideoView, Erstellen Sie eine Instanz der Klasse:

MediaController vidControl = neuer MediaController (dieser); 

Legen Sie als Nächstes fest, dass Sie die VideoView Instanz als Anker:

vidControl.setAnchorView (vidView); 

Und schließlich legen Sie es als Mediencontroller für die VideoView Objekt:

vidView.setMediaController (vidControl); 

Wenn Sie die App jetzt ausführen, sollte der Benutzer in der Lage sein, die Wiedergabe des Streaming-Videos zu steuern, einschließlich der Schnellvorlauf- und Rücklaufschaltflächen, einer Wiedergabe / Pause-Taste und einer Suchleistensteuerung.

Die Suchleistensteuerung wird von der Länge der Mediendatei rechts und der aktuellen Wiedergabeposition links begleitet. Der Streaming-Status wird nicht nur in der Suchleiste angezeigt, um zu einer Position in der Datei zu springen, sondern wird auch mit derselben Art von Anzeige angezeigt, die der Benutzer von Websites und Apps wie YouTube gewohnt ist.

Wie Sie beim Ausführen der App sehen werden, ist das Standardverhalten, dass die Steuerelemente nach wenigen Augenblicken ausgeblendet werden und wieder angezeigt werden, wenn der Benutzer den Bildschirm berührt. Sie können das Verhalten von konfigurieren MediaController Gegenstand auf verschiedene Weise. In der Serie zum Erstellen einer Musikplayer-App für Android finden Sie ein Beispiel dafür. Sie können die Medienwiedergabe auch verbessern, indem Sie verschiedene Listener implementieren, um das Verhalten Ihrer App zu konfigurieren.

5. Verwenden von Media Player

Schritt 1

Bevor wir fertig sind, lassen Sie uns einen alternativen Ansatz für das Streaming von Video mit der Media Player Klasse, da wir es in der Serie zum Erstellen eines Musik-Players verwendet haben. Sie können Medien, einschließlich Videos, auf ein Medium streamen Media Player Objekt mit einer Oberflächenansicht. Sie können beispielsweise das folgende Layout verwenden:

  

Wir werden uns auf das beziehen SurfaceView bei der Umsetzung der Aktivität Klasse.

Schritt 2

In deiner Aktivität Klasse, fügen Sie die folgenden Schnittstellen hinzu:

public class MainActivity erweitert Activity implementiert SurfaceHolder.Callback, OnPreparedListener 

Ihre IDE sollte Sie auffordern, diese nicht implementierten Methoden hinzuzufügen:

@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Automatisch generierte Methodenstub @Override public void surfaceCreated (Oberflächenhalter arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0) ) // TODO Automatisch generierte Methodenstub @Override public void onPrepared (MediaPlayer mp) // Wiedergabe starten 

Wir werden das hinzufügen surfaceCreated und onPrepared Methoden.

Schritt 3

Um die Wiedergabe zu implementieren, fügen Sie der Klasse die folgenden Instanzvariablen hinzu:

privater MediaPlayer mediaPlayer; private SurfaceHolder vidHolder; private SurfaceView vidSurface; String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";

In dem Aktivität's onCreate Sie können diese Variablen dann mithilfe von starten SurfaceView Objekt, das Sie dem Layout hinzugefügt haben:

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

Schritt 4

In dem surfaceCreated Methode, richten Sie Ihre Medienwiedergaberessourcen ein:

try mediaPlayer = neuer MediaPlayer (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (this); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC);  catch (Ausnahme e) e.printStackTrace ();  

Zum Schluss im onPrepared Methode, Wiedergabe starten:

mediaPlayer.start (); 

Dein Video sollte jetzt im abgespielt werden Media Player Instanz, wenn Sie die App ausführen.

Fazit

In diesem Tutorial haben wir die Grundlagen für das Streaming von Video auf Android mit dem VideoView und Media Player Klassen. Sie können dem hier implementierten Code zahlreiche Verbesserungen hinzufügen, indem Sie beispielsweise die Unterstützung für Video-Player oder Streaming-Medien in die von uns erstellte Musik-Player-App integrieren. Sie können auch die zugehörigen Ressourcen für Android wie die YouTube-Android-Player-API von YouTube überprüfen.