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.
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 EnvatoOppure puoi assumere uno sviluppatore Android per creare una soluzione personalizzata per te. Altrimenti, continua a leggere le istruzioni su come farlo da solo.
È 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.
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:
VideoView
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.
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);
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).
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.
Media Player
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.
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.
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);
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.
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.