Streaming video nelle app Android

La piattaforma Android fornisce librerie che puoi utilizzare per lo streaming di file multimediali, come i video remoti, presentandoli per la riproduzione nelle tue app. In questo tutorial, lo streaming di un file video, visualizzando utilizzando il VideoView componente insieme a MediaController oggetto per consentire all'utente di controllare la riproduzione.

Inoltre, presenteremo brevemente il processo di presentazione del video utilizzando il Media Player classe. Se hai completato la serie sulla creazione di un lettore musicale per Android, puoi utilizzare ciò che impari in questo tutorial per migliorarlo ulteriormente. Dovresti essere in grado di completare questo tutorial se hai già sviluppato almeno alcune app Android.

Opzione Premium

Se vuoi una soluzione pronta, dai un'occhiata a YoVideo, un modello di app per Android per creare un bellissimo riproduttore video mobile per smartphone Android.

Gli utenti possono visualizzare video, seguire e condividere con i propri amici su Facebook. L'utilizzo di questo modello di applicazione consente di risparmiare tempo e denaro nella creazione di un'applicazione di condivisione video.

YoVideo sul mercato Envato

Oppure puoi assumere uno sviluppatore Android per creare una soluzione personalizzata per te. Altrimenti, continua a leggere le istruzioni su come farlo da solo.

1. Crea una nuova app

Passo 1

È possibile utilizzare il codice in questo tutorial per migliorare un'app esistente su cui si sta lavorando oppure è possibile creare una nuova app ora in Eclipse o Android Studio. Crea un nuovo progetto Android, assegnagli un nome a tua scelta, configura i dettagli e assegnagli un iniziale principale Attività classe e layout.

Passo 2

Iniziamo a configurare il manifest del progetto per lo streaming multimediale. Apri il file manifest del tuo progetto e passa all'editing XML nel tuo IDE. Per lo streaming multimediale, è necessario l'accesso a Internet, quindi aggiungi la seguente autorizzazione all'interno di manifesto elemento:

2. Aggiungi VideoView

Passo 1

La piattaforma Android fornisce il VideoView classe in cui è possibile riprodurre file video. Aggiungiamone uno al file di layout principale:

  

Modificare il layout genitore per adattarlo alla propria app, se necessario. Diamo il VideoView esempio un id attributo in modo che possiamo riferirci in seguito. Potrebbe essere necessario modificare le altre proprietà del layout per il proprio progetto.

Passo 2

Ora recuperiamo un riferimento al VideoView istanza nel codice. Apri la tua app principale Attività classe e aggiungere le seguenti importazioni aggiuntive:

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

Il tuo Attività la classe dovrebbe già contenere il onCreate metodo in cui è impostata la vista del contenuto:

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

Dopo il setContentView linea, prendiamo un riferimento al VideoView esempio come segue, usando il id abbiamo impostato nel layout XML:

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

3. Flusso di un file video

Passo 1

Ora possiamo trasmettere un file video all'app. Preparare l'URI per l'endpoint come segue:

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

Ovviamente dovrai utilizzare l'indirizzo remoto per il file video che desideri trasmettere. L'esempio qui è un file video di dominio pubblico ospitato su Internet Archive. Analizziamo la stringa di indirizzo come un URI in modo che possiamo passarlo al VideoView oggetto:

vidView.setVideoURI (vidUri); 

Ora puoi semplicemente iniziare la riproduzione:

vidView.start (); 

Il sistema operativo Android supporta una vasta gamma di formati video e multimediali, con ogni dispositivo che spesso supporta anche formati aggiuntivi.

Come puoi vedere nella Guida per gli sviluppatori, i formati di file video supportati includono 3GP, MP4, WEBM e MKV, a seconda del formato utilizzato e su quale livello di piattaforma l'utente ha installato.

I formati di file audio che puoi aspettarti sono il supporto integrato per includere MP3, MID, OGG e WAV. È possibile eseguire lo streaming di file multimediali su Android su RTSP, HTTP e HTTPS (da Android 3.1).

4. Aggiungi controlli di riproduzione

Passo 1

Abbiamo implementato la riproduzione di video, ma l'utente si aspetterà e sarà abituato ad avere il controllo su di esso. Ancora una volta, la piattaforma Android fornisce risorse per gestire questo utilizzando l'interazione familiare tramite MediaController classe.

Nel tuo Attività La classe di onCreate metodo, prima della linea in cui si chiama inizio sul VideoView, crea un'istanza della classe:

MediaController vidControl = new MediaController (this); 

Quindi, impostalo per usare il VideoView istanza come sua ancora:

vidControl.setAnchorView (vidView); 

E infine, impostalo come controller multimediale per VideoView oggetto:

vidView.setMediaController (vidcontrol); 

Quando esegui l'app ora, l'utente dovrebbe essere in grado di controllare la riproduzione del video in streaming, inclusi i pulsanti di avanzamento e riavvolgimento rapidi, un pulsante di riproduzione / pausa e un controllo della barra di ricerca.

Il controllo della barra di ricerca è accompagnato dalla lunghezza del file multimediale sulla destra e dalla posizione di riproduzione corrente sulla sinistra. Oltre a poter toccare la barra di ricerca per passare a una posizione nel file, lo stato di streaming viene indicato utilizzando lo stesso tipo di display a cui l'utente sarà abituato da siti e app come YouTube.

Come vedrai quando esegui l'app, il comportamento predefinito è che i controlli spariscano dopo pochi istanti, riapparendo quando l'utente tocca lo schermo. È possibile configurare il comportamento di MediaController oggetto in vari modi. Guarda la serie sulla creazione di un'app di lettore musicale per Android per un esempio di come farlo. Puoi anche migliorare la riproduzione multimediale implementando vari listener per configurare il comportamento della tua app.

5. Uso Media Player

Passo 1

Prima di concludere, eseguiamo un approccio alternativo per lo streaming di video usando il Media Player classe, dal momento che lo abbiamo usato nella serie sulla creazione di un lettore musicale. È possibile eseguire lo streaming di contenuti multimediali, incluso il video, a Media Player oggetto usando una vista di superficie. Ad esempio, è possibile utilizzare il seguente layout:

  

Faremo riferimento al SurfaceView nell'implementazione del Attività classe.

Passo 2

Nel tuo Attività classe, aggiungere le seguenti interfacce:

public class MainActivity estende Activity implementa SurfaceHolder.Callback, OnPreparedListener 

L'IDE dovrebbe richiedere di aggiungere questi metodi non implementati:

@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Stub metodo generato automaticamente @Override pubblico void surfaceCreated (SurfaceHolder arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0 ) // TODO Stub metodo generato automaticamente @Override public void onPrepared (MediaPlayer mp) // avvia la riproduzione 

Aggiungeremo al surfaceCreated e onPrepared metodi.

Passaggio 3

Per implementare la riproduzione, aggiungi le seguenti variabili di istanza alla classe:

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

Nel Attività'S onCreate metodo, è quindi possibile iniziare a creare un'istanza di queste variabili utilizzando il comando SurfaceView oggetto aggiunto al layout:

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

Passaggio 4

Nel surfaceCreated metodo, imposta le tue risorse di riproduzione multimediale:

prova mediaPlayer = new MediaPlayer (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (questo); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC);  catch (Exception e) e.printStackTrace ();  

Finalmente, nel onPrepared metodo, avvia la riproduzione:

mediaPlayer.start (); 

Il tuo video dovrebbe ora essere riprodotto nel Media Player istanza quando si esegue l'app.

Conclusione

In questo tutorial, abbiamo delineato le basi dello streaming video su Android utilizzando il VideoView e Media Player classi. Potresti aggiungere molti miglioramenti al codice che abbiamo implementato qui, ad esempio, costruendo video o supporto per lo streaming multimediale nell'app del music player che abbiamo creato. Potresti anche voler controllare le risorse associate per Android come l'API YouTube Player di YouTube.