Streaming video în aplicațiile Android

Platforma Android oferă biblioteci pe care le puteți utiliza pentru streaming fișiere media, cum ar fi videoclipuri de la distanță, prezentându-le pentru redare în aplicațiile dvs. În acest tutorial, vom transmite un fișier video, care îl va afișa folosind VideoView componentă împreună cu o MediaController obiect pentru a permite utilizatorului controlul redării.

De asemenea, vom trece pe scurt procesul de prezentare a videoclipului folosind Media Player clasă. Dacă ați terminat seria despre crearea unui player de muzică pentru Android, ați putea folosi ceea ce învățați în acest tutorial pentru ao îmbunătăți. Ar trebui să puteți completa acest tutorial dacă ați dezvoltat deja cel puțin câteva aplicații Android.

Opțiunea Premium

Dacă doriți o soluție gata făcută, verificați YoVideo, un șablon de aplicație Android pentru crearea unui frumos player video mobil pentru telefonul smartphone Android.

Utilizatorii pot viziona videoclipuri, pot urmări și distribui prietenilor lor pe Facebook. Utilizarea acestui șablon de aplicație vă va economisi bani și timp în crearea unei aplicații de partajare video.

YoVideo pe piața Envato

Sau puteți angaja un dezvoltator Android pentru a crea o soluție personalizată pentru dvs. În caz contrar, citiți-vă pentru instrucțiunile despre cum să faceți singur.

1. Creați o aplicație nouă

Pasul 1

Puteți utiliza codul din acest tutorial pentru a îmbunătăți o aplicație existentă pe care lucrați sau puteți crea o aplicație nouă acum în Eclipse sau în Android Studio. Creați un nou proiect Android, dați-i un nume pe care îl alegeți, configurați detaliile și dați-i o denumire inițială principală Activitate clasă și aspect.

Pasul 2

Să facem mai întâi configurarea manifestului proiectului pentru media streaming. Deschideți fișierul manifest al proiectului și treceți la editarea XML în IDE. Pentru mediile de streaming, aveți nevoie de acces la internet, deci adăugați următoarea permisiune în interiorul manifesta element:

2. Adăugați VideoView

Pasul 1

Platforma Android oferă VideoView în care puteți reda fișiere video. Să adăugăm una în fișierul principal de aspect:

  

Modificați aspectul părinte pentru a se potrivi cu propria aplicație, dacă este necesar. Noi oferim VideoView un exemplu id astfel încât să ne putem referi mai târziu. Este posibil să trebuiască să ajustați celelalte proprietăți ale aspectului pentru propriul design.

Pasul 2

Acum, să recuperăm o referință la VideoView exemplu în cod. Deschideți aplicația principală Activitate și adăugați următoarele importuri suplimentare:

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

Ta Activitate ar trebui să conțină deja onCreate metoda în care este setată vizualizarea conținutului:

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

După setContentView line, să luăm o referință la VideoView exemplu după cum urmează, folosind id am setat în aspectul XML:

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

3. Stream un fișier video

Pasul 1

Acum putem transmite un fișier video către aplicație. Pregătiți URI pentru punctul final după cum urmează:

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

Veți avea nevoie, desigur, să utilizați adresa la distanță pentru fișierul video pe care doriți să îl transmiteți în flux. Exemplul de aici este un fișier video de domeniu public gazduit în Arhiva Internet. Noi analizăm șirul de adresă ca un URI, astfel încât să îl putem transfera la VideoView obiect:

vidView.setVideoURI (vidUri); 

Acum, puteți porni pur și simplu redarea:

vidView.start (); 

Sistemul de operare Android suportă o gamă largă de formate video și media, fiecare suport acceptând adesea alte formate suplimentare.

După cum puteți vedea în Ghidul pentru dezvoltatori, formatele de fișiere video acceptate includ funcțiile 3GP, MP4, WEBM și MKV, în funcție de formatul utilizat și de nivelul de platformă instalat de utilizator.

Formatele de fișiere audio vă puteți aștepta la suportul încorporat pentru include MP3, MID, OGG și WAV. Puteți stream media pe Android prin RTSP, HTTP și HTTPS (din Android 3.1).

4. Adăugați controale de redare

Pasul 1

Am implementat redarea video, dar utilizatorul se va aștepta și va fi obișnuit să aibă control asupra acestuia. Din nou, platforma Android oferă resurse pentru manipularea acestui lucru folosind interacțiunea familiară prin MediaController clasă.

În tine Activitate clasa lui onCreate înainte de linia pe care o apelați start pe VideoView, creați o instanță a clasei:

MediaController vidControl = nou MediaController (acest); 

Apoi, setați-l să folosească VideoView exemplu ca ancora:

vidControl.setAnchorView (vidView); 

Și în final, setați-l ca controlor de media pentru VideoView obiect:

vidView.setMediaController (vidControl); 

Când rulați aplicația acum, utilizatorul ar trebui să poată controla redarea videoclipurilor streaming, inclusiv butoanele de redirecționare înainte și înapoi, un buton de redare / pauză și un buton de căutare a barei.

Comanda barei de căutare este însoțită de lungimea fișierului media din dreapta și de poziția curentă de redare din stânga. Pe lângă faptul că puteți atinge de-a lungul barei de căutare pentru a trece la o poziție din fișier, starea de streaming este indicată utilizând același tip de afișare pe care utilizatorul o va obișnui de la site-uri și aplicații cum ar fi YouTube.

Așa cum veți vedea când rulați aplicația, comportamentul implicit este ca controalele să dispară după câteva momente, reapărând când utilizatorul atinge ecranul. Puteți configura comportamentul MediaController obiecte în diferite moduri. Consultați seria despre crearea unei aplicații pentru music player pentru Android, pentru a vedea cum se poate face acest lucru. De asemenea, puteți îmbunătăți redarea conținutului media implementând diferiți ascultători pentru a configura comportamentul aplicației.

5. Utilizarea Media Player

Pasul 1

Înainte de a termina, să trecem printr-o abordare alternativă pentru streaming video folosind Media Player clasa, deoarece am folosit-o în seria despre crearea unui music player. Puteți să redirecționați materiale media, inclusiv videoclipurile, la un Media Player obiect folosind o vedere de suprafață. De exemplu, puteți utiliza următoarea structură:

  

Ne vom referi la SurfaceView în punerea în aplicare a directivei Activitate clasă.

Pasul 2

În tine Activitate clasă, adăugați următoarele interfețe:

clasa publică MainActivity se extinde Activitatea implementează SurfaceHolder.Callback, OnPreparedListener 

IDE-ul dvs. vă va solicita să adăugați aceste metode neimplementate:

@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Stub de metoda generata automat @Overide public void surfaceCreated (SurfaceHolder arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0 ) // TODO Metoda stub generată automat @Override publice void onPrepared (MediaPlayer mp) // începe redarea 

Vom adăuga la surfaceCreated și onPrepared metode.

Pasul 3

Pentru a implementa redarea, adăugați la clasă următoarele variabile de instanță:

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

În Activitate„s onCreate , puteți începe apoi să instanțiați aceste variabile folosind SurfaceView obiect pe care l-ați adăugat la aspect:

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

Pasul 4

În surfaceCreated , configurați-vă resursele de redare media:

încercați mediaPlayer = MediaPlayer nou (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (aceasta); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC);  captură (Excepție e) e.printStackTrace ();  

În cele din urmă, în onPrepared , începeți redarea:

mediaPlayer.start (); 

Videoclipul dvs. ar trebui să se joace acum în Media Player atunci când rulați aplicația.

Concluzie

În acest tutorial, am subliniat elementele de bază ale streaming video pe Android folosind VideoView și Media Player clase. Ați putea adăuga o mulțime de îmbunătățiri la codul pe care l-am implementat aici, de exemplu, prin construirea de suporturi media sau streaming media în aplicația pentru music player creată de noi. De asemenea, vă recomandăm să verificați resursele asociate pentru Android, cum ar fi API-ul YouTube Android Player.

Cod