Het Android-platform biedt bibliotheken die u kunt gebruiken om mediabestanden te streamen, zoals externe video's, en ze te presenteren voor weergave in uw apps. In deze zelfstudie streamen we een videobestand en geven het weer met de VideoView
component samen met een MediaController
object om de gebruiker het afspelen te laten besturen.
We zullen ook kort het proces doornemen van het presenteren van de video met behulp van de Mediaspeler
klasse. Als u de serie over het maken van een muziekspeler voor Android hebt voltooid, kunt u de informatie in deze zelfstudie gebruiken om deze verder te verbeteren. U zou deze tutorial moeten kunnen voltooien als u al ten minste een paar Android-apps hebt ontwikkeld.
Als u een kant-en-klare oplossing zoekt, bekijk dan YoVideo, een Android-app-sjabloon voor het maken van een prachtige mobiele videospeler voor Android-smartphones.
Gebruikers kunnen video's bekijken, volgen en delen met hun vrienden op Facebook. Als u deze applicatiesjabloon gebruikt, bespaart u tijd en geld bij het maken van een toepassing voor het delen van video's.
YoVideo op Envato MarketOf u kunt een Android-ontwikkelaar inhuren om een aangepaste oplossing voor u te maken. Lees anders verder voor de instructies om dit zelf te doen.
U kunt de code in deze zelfstudie gebruiken om een bestaande app waaraan u werkt, te verbeteren of u kunt nu een nieuwe app maken in Eclipse of Android Studio. Maak een nieuw Android-project, geef het een naam naar keuze, configureer de details en geef het een eerste hoofd Activiteit
klasse en lay-out.
Laten we eerst het manifest van het project configureren voor streaming media. Open het manifestbestand van uw project en schakel over naar XML-bewerking in uw IDE. Voor streaming media hebt u internettoegang nodig, dus voeg de volgende toestemming toe binnen de manifesteren
element:
VideoView
Het Android-platform biedt de VideoView
klas waarin je videobestanden kunt afspelen. Laten we er een toevoegen aan het hoofdlay-outbestand:
Wijzig indien nodig de bovenliggende lay-out om aan te passen aan uw eigen app. We geven de VideoView
bijvoorbeeld een ID kaart
attribuut zodat we er later naar kunnen verwijzen. Mogelijk moet u de andere lay-outeigenschappen aanpassen voor uw eigen ontwerp.
Laten we nu een verwijzing naar de ophalen VideoView
bijvoorbeeld in code. Open de hoofd van uw app Activiteit
klasse en voeg de volgende extra invoer toe:
import android.net.Uri; importeer android.widget.MediaController; import android.widget.VideoView;
Jouw Activiteit
klasse moet al de onCreate
methode waarin de inhoudsweergave is ingesteld:
@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);
Na de setContentView
regel, laten we een verwijzing naar de VideoView
bijvoorbeeld als volgt, met behulp van de ID kaart
we zetten in de XML-indeling:
VideoView vidView = (VideoView) findViewById (R.id.myVideo);
Nu kunnen we een videobestand naar de app streamen. Bereid de URI voor het eindpunt als volgt voor:
String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4"; Uri vidUri = Uri.parse (vidAddress);
U zult natuurlijk het externe adres moeten gebruiken voor het videobestand dat u wilt streamen. Het voorbeeld hier is een videobestand van een openbaar domein dat wordt gehost op het internetarchief. We ontleden de adresstring als een URI zodat we deze kunnen doorgeven aan de VideoView
voorwerp:
vidView.setVideoURI (vidUri);
Nu kunt u eenvoudig beginnen met afspelen:
vidView.start ();
Het Android-besturingssysteem ondersteunt een reeks video- en media-indelingen, waarbij elk apparaat vaak extra indelingen ondersteunt.
Zoals u kunt zien in de Handleiding voor ontwikkelaars, zijn de ondersteunde videobestandsindelingen 3GP, MP4, WEBM en MKV, afhankelijk van het gebruikte formaat en op welk platformniveau de gebruiker heeft geïnstalleerd.
Audiobestandsindelingen die u kunt verwachten ingebouwde ondersteuning voor onder meer MP3, MID, OGG en WAV. U kunt media op Android streamen via RTSP, HTTP en HTTPS (vanaf Android 3.1).
We hebben videoweergave geïmplementeerd, maar de gebruiker verwacht en is eraan gewend om deze te beheersen. Nogmaals, het Android-platform biedt middelen om dit via vertrouwde interactie via de MediaController
klasse.
In uw Activiteit
klasse onCreate
methode, vóór de lijn waarin u belt begin
op de VideoView
, een instantie van de klasse maken:
MediaController vidControl = nieuwe MediaController (dit);
Stel het vervolgens in om de. Te gebruiken VideoView
bijvoorbeeld als zijn anker:
vidControl.setAnchorView (vidView);
En ten slotte, stel het in als de mediacontroller voor de VideoView
voorwerp:
vidView.setMediaController (vidcontrol);
Wanneer u de app nu uitvoert, moet de gebruiker het afspelen van de streamingvideo kunnen regelen, inclusief snel vooruit- en terugspoelen, een afspeel- / pauzeknop en een zoekbalkbediening.
De zoekbalkbesturing wordt vergezeld door de lengte van het mediabestand aan de rechterkant en de huidige afspeelpositie aan de linkerkant. Naast het kunnen tikken langs de zoekbalk om naar een positie in het bestand te springen, wordt de streamingstatus aangegeven met gebruik van hetzelfde type display als de gebruiker van sites en apps zoals YouTube gewend is..
Zoals u zult zien wanneer u de app uitvoert, is het standaardgedrag dat de besturingselementen na enkele ogenblikken verdwijnen en weer verschijnen wanneer de gebruiker het scherm aanraakt. U kunt het gedrag van de MediaController
object op verschillende manieren. Bekijk de serie over het maken van een app voor muziekspelers voor Android voor een voorbeeld van hoe u dit kunt doen. U kunt ook het afspelen van media verbeteren door verschillende luisteraars te implementeren om het gedrag van uw app te configureren.
Mediaspeler
Laten we voordat we klaar zijn met een alternatieve aanpak voor het streamen van video met behulp van de Mediaspeler
klasse, omdat we het in de serie over het maken van een muziekspeler hebben gebruikt. U kunt media, inclusief video, naar a streamen Mediaspeler
object met behulp van een bovenaanzicht. U kunt bijvoorbeeld de volgende indeling gebruiken:
We zullen verwijzen naar de SurfaceView
bij de implementatie van de Activiteit
klasse.
In uw Activiteit
klasse, voeg de volgende interfaces toe:
public class MainActivity breidt Activiteit uit. SurfaceHolder.Callback, OnPreparedListener
Uw IDE zou u moeten vragen om deze niet-geïmplementeerde methoden toe te voegen:
@Override openbare leegte surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Automatisch gegenereerde methode-stub @Override public void surfaceCreated (SurfaceHolder arg0) // setup @Override public unfid surfaceDestroyed (SurfaceHolder arg0 ) // TODO Automatisch gegenereerde methode-stub @Override public void onPrepared (MediaPlayer mp) // start afspelen
We zullen toevoegen aan de surfaceCreated
en onPrepared
methoden.
Als u het afspelen wilt implementeren, voegt u de volgende instantievariabelen toe aan de klasse:
privé MediaPlayer mediaPlayer; privé SurfaceHolder vidHolder; privé SurfaceView vidSurface; String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
In de Activiteit
's onCreate
methode, kunt u beginnen met het instantiëren van deze variabelen met behulp van de SurfaceView
object dat je hebt toegevoegd aan de lay-out:
vidSurface = (SurfaceView) findViewById (R.id.surfView); vidHolder = vidSurface.getHolder (); vidHolder.addCallback (deze);
In de surfaceCreated
methode, stel je media afspeelbronnen in:
probeer mediaPlayer = nieuwe MediaPlayer (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (deze); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC); catch (Uitzondering e) e.printStackTrace ();
Eindelijk, in de onPrepared
methode, begin met afspelen:
mediaPlayer.start ();
Je video zou nu moeten worden afgespeeld in de Mediaspeler
bijvoorbeeld wanneer u de app uitvoert.
In deze zelfstudie hebben we de basisbeginselen van het streamen van video op Android beschreven met behulp van de VideoView
en Mediaspeler
klassen. U kunt veel verbeteringen toevoegen aan de code die we hier hebben geïmplementeerd, bijvoorbeeld door video- of streamingmedia-ondersteuning te bouwen in de muziekspeler-app die we hebben gemaakt. U kunt ook gerelateerde bronnen voor Android bekijken, zoals de YouTube Android Player API.