Streaming Video en Aplicaciones Android

La plataforma Android proporciona bibliotecas que puede usar para transmitir archivos multimedia, como videos remotos, presentándolos para reproducirlos en sus aplicaciones. En este tutorial, transmitiremos un archivo de video, mostrándolo usando el VideoView componente junto con un MediaController objeto para permitir que el usuario controle la reproducción.

También realizaremos brevemente el proceso de presentación del video utilizando el Reproductor multimedia clase. Si ha completado la serie sobre cómo crear un reproductor de música para Android, puede usar lo que aprendió en este tutorial para mejorarlo aún más. Debería poder completar este tutorial si ya ha desarrollado al menos algunas aplicaciones de Android..

Opción Premium

Si desea una solución ya hecha, consulte YoVideo, una plantilla de aplicación de Android para crear un hermoso reproductor de video móvil para teléfono inteligente Android.

Los usuarios pueden ver videos, seguir y compartir con sus amigos en Facebook. El uso de esta plantilla de aplicación le ahorrará tiempo y dinero en la creación de una aplicación para compartir videos.

YoVideo en Envato Market

O puede contratar a un desarrollador de Android para crear una solución personalizada para usted. De lo contrario, sigue leyendo para obtener instrucciones sobre cómo hacerlo tú mismo..

1. Crear una nueva aplicación

Paso 1

Puede usar el código en este tutorial para mejorar una aplicación existente en la que está trabajando o puede crear una nueva aplicación ahora en Eclipse o Android Studio. Cree un nuevo proyecto de Android, asígnele un nombre de su elección, configure los detalles y déle una inicial principal Actividad clase y diseño.

Paso 2

Primero configuremos el manifiesto del proyecto para la transmisión de medios. Abra el archivo de manifiesto de su proyecto y cambie a la edición XML en su IDE. Para la transmisión de medios, necesita acceso a Internet, así que agregue el siguiente permiso dentro de la manifiesto elemento:

2. Añadir VideoView

Paso 1

La plataforma Android proporciona la VideoView Clase en la que puedes reproducir archivos de vídeo. Vamos a agregar uno al archivo de diseño principal:

  

Modifique el diseño de los padres para que se adapte a su propia aplicación si es necesario Damos la VideoView una instancia carné de identidad Atributo para que podamos referirlo más adelante. Es posible que deba ajustar las otras propiedades de diseño para su propio diseño..

Paso 2

Ahora vamos a recuperar una referencia a la VideoView instancia en codigo Abre la aplicación principal de tu aplicación. Actividad Clase y agregue las siguientes importaciones adicionales:

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

Tu Actividad clase ya debe contener el onCreate Método en el que se establece la vista de contenido:

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

Después de la setContentView línea, vamos a obtener una referencia a la VideoView instancia de la siguiente manera, utilizando el carné de identidad Establecemos en el diseño XML:

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

3. Transmitir un archivo de video

Paso 1

Ahora podemos transmitir un archivo de video a la aplicación. Prepare el URI para el punto final de la siguiente manera:

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

Por supuesto, necesitará usar la dirección remota para el archivo de video que desea transmitir. El ejemplo aquí es un archivo de video de dominio público alojado en el Archivo de Internet. Analizamos la cadena de direcciones como un URI para que podamos pasarla a la VideoView objeto:

vidView.setVideoURI (vidUri); 

Ahora simplemente puede iniciar la reproducción:

vidView.start (); 

El sistema operativo Android es compatible con una variedad de formatos de video y medios, y cada dispositivo a menudo admite formatos adicionales además de esto.

Como puede ver en la Guía del desarrollador, los formatos de archivos de video compatibles incluyen 3GP, MP4, WEBM y MKV, según el formato utilizado y en qué nivel de plataforma haya instalado el usuario..

Los formatos de archivos de audio que puede esperar compatibilidad incorporada incluyen MP3, MID, OGG y WAV. Puede transmitir medios en Android a través de RTSP, HTTP y HTTPS (desde Android 3.1).

4. Añadir controles de reproducción

Paso 1

Hemos implementado la reproducción de video, pero el usuario esperará y estará acostumbrado a tener control sobre él. Una vez más, la plataforma Android proporciona recursos para manejar esto mediante una interacción familiar a través de MediaController clase.

En tus Actividad clase onCreate Método, antes de la línea en la que llamas. comienzo sobre el VideoView, crear una instancia de la clase:

MediaController vidControl = new MediaController (this); 

A continuación, configúralo para usar el VideoView instancia como su ancla:

vidControl.setAnchorView (vidView); 

Y, finalmente, configurarlo como el controlador de medios para el VideoView objeto:

vidView.setMediaController (vidControl); 

Cuando ejecute la aplicación ahora, el usuario debe poder controlar la reproducción de la transmisión de video, incluidos los botones de avance rápido y rebobinado, un botón de reproducción / pausa y un control de barra de búsqueda.

El control de la barra de búsqueda está acompañado por la longitud del archivo multimedia a la derecha y la posición de reproducción actual a la izquierda. Además de poder presionar a lo largo de la barra de búsqueda para saltar a una posición en el archivo, el estado de transmisión se indica mediante el mismo tipo de pantalla al que estará acostumbrado el usuario desde sitios y aplicaciones como YouTube.

Como verá cuando ejecute la aplicación, el comportamiento predeterminado es que los controles desaparezcan después de unos momentos, y volverá a aparecer cuando el usuario toque la pantalla. Puede configurar el comportamiento de la MediaController objeto de varias maneras. Vea la serie sobre cómo crear una aplicación de reproductor de música para Android para ver un ejemplo de cómo hacerlo. También puede mejorar la reproducción de medios al implementar varios oyentes para configurar el comportamiento de su aplicación.

5. Utilizando Reproductor multimedia

Paso 1

Antes de que terminemos, veamos un enfoque alternativo para la transmisión de video usando el Reproductor multimedia clase, ya que lo usamos en la serie en la creación de un reproductor de música. Puede transmitir medios, incluyendo video, a un Reproductor multimedia objeto utilizando una vista de superficie. Por ejemplo, podrías usar el siguiente diseño:

  

Nos referiremos a la SurfaceView en la implementación de la Actividad clase.

Paso 2

En tus Actividad clase, agregue las siguientes interfaces:

La clase pública MainActivity extiende la actividad Implementa SurfaceHolder.Callback, OnPreparedListener 

Su IDE debe solicitarle que agregue estos métodos no implementados:

@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Código auxiliar del método generado automáticamente @Override public void surfaceCreated (SurfaceHolder arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0 ) // TODO Talón de método generado automáticamente @ Anular la anulación pública onPrepared (MediaPlayer mp) // iniciar la reproducción 

Añadiremos a la superficie creada y enPreparado metodos.

Paso 3

Para implementar la reproducción, agregue las siguientes variables de instancia a la clase:

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

En el Actividades onCreate A continuación, puede comenzar a crear una instancia de estas variables utilizando el SurfaceView Objeto que ha agregado al diseño:

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

Etapa 4

En el superficie creada Método, configura tus recursos de reproducción multimedia:

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

Finalmente, en el enPreparado método, iniciar la reproducción:

mediaPlayer.start (); 

Tu video debería ahora reproducirse en el Reproductor multimedia instancia cuando ejecuta la aplicación.

Conclusión

En este tutorial, hemos resumido los conceptos básicos de la transmisión de video en Android usando el VideoView y Reproductor multimedia clases Puede agregar muchas mejoras al código que implementamos aquí, por ejemplo, mediante la creación de video o transmisión de soporte multimedia en la aplicación de reproductor de música que creamos. También puede consultar los recursos asociados para Android, como la API del reproductor de Android de YouTube..