Transmisión en vivo de EXOPlayer: implementación y consejos útiles

Publicado: 2018-06-08

La reproducción de música y videos con la ayuda de la transmisión en vivo es una actividad importante para los dispositivos Android. YouTube es una de las plataformas más poderosas para compartir contenido de video. Por lo tanto, puede comprar suscriptores para los canales de YouTube para conectarse con más personas. En consecuencia, existen numerosas posibilidades para que los usuarios hagan eso, la mayoría de ellas de código abierto. Debido a su gran variedad, a veces es difícil elegir el mejor. Sin embargo, existe una forma determinada de proporcionar a su proyecto las mejores instalaciones. En este artículo, vamos a compartir nuestra opinión sobre qué servicio de jugador elegir y por qué. Permítanos presentarle el mundo de las posibilidades de transmisión ilimitadas, donde el MediaPlayer nativo sigue siendo uno de los más populares. Sin embargo, también apareció un nuevo jugador de campo. ExoPlayer, con su transmisión en vivo EXOPlayer, tiene una gama más amplia de funciones y está listo para convertirse en su próximo favorito.

Imagen principal de la transmisión en vivo de EXOPlayer

Breve descripción

En 2014, la implementación de la biblioteca Google ExoPlayer para un reproductor de video con el control personalizado operativo y 'exo live stream' fue una idea brillante. El MediaPlayer nativo integrado demostró su inconsistencia en un asunto tan importante como el comportamiento estable y confiable en diferentes dispositivos. Su capricho junto con la pesadez del código y la política de rendimiento intransigente lo hicieron famoso entre los expertos. Por el contrario, el ExoPlayer recién lanzado, construido sobre la base de las API de medios de bajo nivel de Android, aseguró las mejores posibilidades de transmisión de música y video.

La primera y principal razón para su lanzamiento fue, por supuesto, la implementación de HTTP Live Streaming (HLS), un protocolo para la transmisión de medios desarrollado por Apple. En él, el contenido de video consta de fragmentos cargados en tiempo real y con tasa de transferencia de bits adaptativa. Así es como la transmisión en vivo de ExoPlayer se convirtió en una alternativa totalmente personalizable a las API nativas de MediaPlayer, proporcionando una API conveniente para la transmisión de video y audio en todos los dispositivos. Ahora lo utilizan miles de aplicaciones con nombres de celebridades como BBC incluido.

Alternativas (y por qué no debería elegirlas)

Por supuesto, ExoPlayer tiene varios competidores bastante exitosos. Incluyen servicios tan conocidos como:

  • Vimeo

imagen de transmisión de vimeo exo

  • Vitamio;

Vitamio exoplayer hls image

  • LibVLC.

Sin embargo, ahora se puede afirmar con seguridad que ExoPlayer es mucho mejor que cualquiera de ellos. A pesar de su impresionante número de suscriptores, Vimeo carece de flexibilidad, ya que el contenido se almacena exclusivamente en sus servidores, con un enlace iframe provisto para su reproducción en WebView. Eso reduce significativamente el rendimiento de la aplicación. Al estar basado en la popular biblioteca FFmpeg y poseer muchas características útiles, Vitamio ganó mucha popularidad. Sin embargo, no es un servicio gratuito, por lo que no muchas personas están listas para usarlo. LibVLC tiene una funcionalidad bastante restringida, ya que solo maneja proyectos con soporte NDK. Es por eso que ExoPlayer es el servicio más popular de este tipo en la actualidad.

¿Qué es positivo?

Como cualquier servicio, ExoPlayer tiene sus ventajas e inconvenientes. Sus principales ventajas incluyen:

  • implementación de exoplayer HLS con todas sus características avanzadas, como manejo de errores, etc .;
  • comienzo fácil;
  • Base Java, que permite la posibilidad de una depuración exitosa;
  • variedad de formatos;
  • Soporte completo del cifrado común Widevine para Android 4.4 y superior.
  • componentes de control que son totalmente personalizables;
  • posibilidad de reproducir audio y video en una secuencia;
  • soporte de subtítulos;
  • Soporte de Google Cast SDK, que le permite trabajar con Tv o sistema de sonido;
  • Uso de MediaSource.

Este último permite configurar no solo el flujo HLS de exoplayer, sino también DASH (DashMediaSource) y SmoothStreaming (SsMediaSource). También habilita componentes de transmisión en vivo de EXOPlayer como subtítulos cargados lateralmente, así como la reproducción de secuencias de video. Una característica más interesante que posee es el PlayerNotificationManager recientemente lanzado, que permite al usuario recibir notificaciones de reproducción para controlar su transmisión exo de video o audio. Con ellos, puede avanzar, rebobinar, pasar a la siguiente pista sin problemas, etc. Para crear MediaSource para transmisión de video HLS, debe realizar acciones tan simples:


fun getHlsMediaSource (hls: String): MediaSource {
val bandwidthMeter = DefaultBandwidthMeter ()
val applicationName = Util.getUserAgent (contexto, APPLICATION_NAME)
val dataSourceFactory = DefaultDataSourceFactory (contexto, nombre de la aplicación, medidor de ancho de banda)
val factory = HlsMediaSource.Factory (dataSourceFactory)
return factory.createMediaSource (Uri.parse (hls))
}


Además, la biblioteca de transmisión en vivo de EXOPlayer tiene una gama de otras capacidades fantásticas, como MergingMediaSource, ConcatenatingMediaSource, TrackSelector y LoopingMediaSource. Todos garantizan el rendimiento perfecto de un complejo sistema de posibilidades de transmisión Exo. ExoPlayer tiene una gama de estos componentes por defecto para el funcionamiento básico. Sin embargo, también puede hacer uso de numerosas implementaciones personalizadas para un rendimiento no estándar.

Con todo, exo live stream maneja todas las tareas importantes, como la transmisión de video con la identificación de errores asociados con la fuente del contenido, agregar un reproductor de video o audio que admita la mayor parte de los formatos modernos a su aplicación móvil o de TV en un poco tiempo, etc.

¿Qué es negativo?

Por supuesto, nada es perfecto. La transmisión en vivo de EXOPlayer, a pesar de su modernidad y una serie de características interesantes, no es una excepción. Sus principales desventajas son las siguientes:

  • limitaciones de diseño;
  • falta de soporte para versiones anteriores a la 16 de Android;
  • una imposibilidad del rendimiento de recreación del jugador en caso de un bloqueo de pantalla;
  • sin retroceso a la última posición vista.

La solución de trabajo para los últimos desafíos se ve así:


anular la diversión onPause () {

super .onPause ()

releasePlayer ()

}


diversión privada releasePlayer () {

if ( simpleExoPlayer ! = null ) {

resumePosition = Math.max (0, simpleExoPlayer !!. contentPosition )

shouldAutoPlay = simpleExoPlayer !!. playWhenReady

simpleExoPlayer !!. release ()

simpleExoPlayer = nulo

}

}


anular diversión enResume () {

super .onResume ()

initPlayer ()

}


diversión privada initPlayer () {

simpleExoPlayer = streamConfigurator .createExoPlayer ()

...

simpleExoPlayerView. useController = true

simpleExoPlayerView. jugador = simpleExoPlayer

...

simpleExoPlayer ? .seekTo ( resumePosition )

...

}


Sin embargo, estos problemas pueden atribuirse a las peculiaridades de la arquitectura de Android y su hyperthreading, los desarrolladores de Android pueden tener un momento algo difícil. Aparte de eso, la transmisión en vivo de ExoPlayer es una excelente opción.

Algoritmo de EXOPlayer Live Streaming

Los expertos afirman que ExoPlayer es realmente útil y fácil de usar, y estamos totalmente de acuerdo con esta idea. Para comenzar a trabajar con él, solo necesita realizar unos pocos pasos simples. Incluyen:

  • agregando ExoPlayer a su proyecto en un formulario de dependencia. Agregarlo al archivo del módulo de la aplicación garantizará que funcione para la biblioteca completa de transmisión en vivo de ExoPlayer;
  • creando una instancia de SimpleExoPlayer (use ExoPlayerFactory para eso);
  • adjuntar el reproductor a la vista tanto para la salida de video como para la entrada fácil del usuario;
  • preparación del MediaSource del reproductor para jugar.
  • la autorización del jugador (con un código especial).

Conclusiones

La transmisión en vivo de ExoPlayer es una solución de código abierto lista para usar que permite resolver muchos problemas problemáticos para otras bibliotecas. Como puede ver, su lista de ventajas y características positivas es mucho más larga que la enumeración de las negativas. Probablemente por esa razón, se utiliza en la gran mayoría de aplicaciones de Android y es totalmente compatible con Google. En comparación con sus principales alternativas, es mucho más flexible y sencillo. Nuestro equipo le aconseja que comience a usarlo, ya que sus interesantes características pueden hacer que usted se sienta muy bien.