ExoPlayer en Android con ejemplo

ExoPlayerView es uno de los componentes de interfaz de usuario más utilizados en muchas aplicaciones como YouTube, Netflix y muchas plataformas de transmisión de video. ExoPlayerView se usa para transmisión de audio y video en aplicaciones de Android. Muchas aplicaciones de Google usan ExoPlayerView para transmitir audios y videos. ExoPlayer es una biblioteca de reproductores multimedia que proporciona una forma de reproducir audio y video con mucha personalización. Es una alternativa que sirve para reproducir videos y audios en Android junto con MediaPlayer. ExoPlayer es una biblioteca que es la mejor fuente alternativa para reproducir audio y videos en Android. Esta biblioteca también lo ayudará a personalizar su reproductor multimedia de acuerdo con nuestros requisitos. 

Ventajas de usar ExoPlayer

  • ExoPlayer brinda soporte para la lista de reproducción y con esto, puede recortar o fusionar sus medios.
  • Con la ayuda de ExoPlayer, puede obtener directamente archivos multimedia como audios y videos directamente desde Internet y reproducirlos dentro de ExoPlayer.
  • Proporciona cifrado y transmisión fluidos de archivos de video y audio.
  • ExoPlayer le brinda la posibilidad de personalizar su reproductor multimedia de acuerdo con sus requisitos.

ExoPlayer frente a MediaPlayer 

ExoPlayer

Reproductor multimedia

ExoPlayer admite transmisión dinámica a través de HTTP. MediaPlayer no es compatible con soporte dinámico sobre HTTP. 
Proporciona transmisión fluida y encriptación para el video reproducido.  MediaPlayer no proporciona transmisión fluida ni encriptación para el video.
ExoPlayer brinda soporte para recortar o fusionar sus archivos multimedia.  MediaPlayer no brinda soporte para recortar y fusionar archivos multimedia. 
ExoPlayer se puede personalizar según nuestros requisitos.  MediaPlayer no se puede personalizar según nuestros requisitos. 
ExoPlayer puede transmitir archivos de audio y video directamente desde el servidor sin descargarlos.  Media Player no puede reproducir archivos de audio y video directamente desde el servidor. 
ExoPlayer se lanza en el nivel de API 16 y no funcionará en el dispositivo por debajo del nivel de API 16. Media Player se lanzó en el nivel 1 de API y funciona en todos los dispositivos. 
ExoPlayer maneja fácilmente el almacenamiento en búfer de archivos de audio y video.  Media Player no puede manejar el almacenamiento en búfer de audio y videos.

Implementación paso a paso de ExoPlayer en Android

Crearemos una aplicación de reproductor de video simple en la que buscaremos un video de una URL y reproduciremos ese video dentro de nuestro ExoPlayer. Tenga en cuenta que estamos usando JAVA para implementar ExoPlayer en Android. 

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: Agregar dependencia a build.gradle (Módulo: aplicación)

Navegue a Gradle Scripts > build.gradle(Module:app) y agregue la siguiente dependencia en la sección de dependencias. 

// dependencia para exojugador

implementación ‘com.google.android.exoplayer:exoplayer:r2.4.0’

// para soporte básico en exoplayer.

implementación ‘com.google.android.exoplayer:exoplayer-core:r2.4.0’

// por agregar soporte de guión en nuestro exoplayer.

implementación ‘com.google.android.exoplayer:exoplayer-dash:r2.4.0’

// por agregar soporte hls en exoplayer.

implementación ‘com.google.android.exoplayer:exoplayer-hls:r2.4.0’

// para una transmisión fluida de video en nuestro exoplayer.

implementación ‘com.google.android.exoplayer:exoplayer-smoothstreaming:r2.4.0’

// para generar la interfaz de usuario predeterminada de exoplayer

implementación ‘com.google.android.exoplayer:exoplayer-ui:r2.4.0’

Después de agregar esta dependencia, sincronice el proyecto.

Paso 3: agregue permiso de Internet en su archivo de manifiesto

Navegue a la aplicación > carpeta de manifiesto y anote los siguientes permisos. 

<!–Permiso de Internet y permiso de acceso a la red–>

<usos-permiso android:name=”android.permission.INTERNET”/>

<usos-permiso android:name=”android.permission.ACCESS_NETWORK_STATE”/>

Paso 4: Trabajando con activity_main.xml

Ahora comenzaremos a implementar nuestro ExoPlayerView en nuestro archivo XML. Vaya a la aplicación > res > diseño > actividad_principal.xml . Dentro de ese archivo, agregue el siguiente código.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
    <!--Widget for exoplayer view-->
    <com.google.android.exoplayer2.ui.SimpleExoPlayerView
        android:id="@+id/idExoPlayerVIew"
        android:layout_width="match_parent"
        android:layout_height="500dp" />
      
</RelativeLayout>

Paso 5: trabajar con el archivo MainActivity.java

Vaya a la aplicación > java > el nombre del paquete de su aplicación > archivo MainActivity.java. Dentro de ese archivo, agregue el siguiente código. Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
  
import androidx.appcompat.app.AppCompatActivity;
  
import com.google.android.exoplayer2.ExoPlayerFactory;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
import com.google.android.exoplayer2.extractor.ExtractorsFactory;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelector;
import com.google.android.exoplayer2.ui.SimpleExoPlayerView;
import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
  
public class MainActivity extends AppCompatActivity {
  
    // creating a variable for exoplayerview.
    SimpleExoPlayerView exoPlayerView;
      
    // creating a variable for exoplayer
    SimpleExoPlayer exoPlayer;
      
    // url of video which we are loading.
    String videoURL = "https://media.geeksforgeeks.org/wp-content/uploads/20201217163353/Screenrecorder-2020-12-17-16-32-03-350.mp4";
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        exoPlayerView = findViewById(R.id.idExoPlayerVIew);
        try {
              
            // bandwisthmeter is used for 
            // getting default bandwidth
            BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
              
            // track selector is used to navigate between 
            // video using a default seekbar.
            TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
              
            // we are adding our track selector to exoplayer.
            exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
              
            // we are parsing a video url
            // and parsing its video uri.
            Uri videouri = Uri.parse(videoURL);
              
            // we are creating a variable for datasource factory
            // and setting its user agent as 'exoplayer_view'
            DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");
              
            // we are creating a variable for extractor factory
            // and setting it to default extractor factory.
            ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
              
            // we are creating a media source with above variables 
            // and passing our event handler as null,
            MediaSource mediaSource = new ExtractorMediaSource(videouri, dataSourceFactory, extractorsFactory, null, null);
              
            // inside our exoplayer view 
            // we are setting our player
            exoPlayerView.setPlayer(exoPlayer);
              
            // we are preparing our exoplayer
            // with media source.
            exoPlayer.prepare(mediaSource);
              
            // we are setting our exoplayer
            // when it is ready.
            exoPlayer.setPlayWhenReady(true);
            
        } catch (Exception e) {
            // below line is used for 
            // handling our errors.
            Log.e("TAG", "Error : " + e.toString());
        }
    }
}

Nota: Hemos utilizado este video en este proyecto.

Producción: 

Mira el proyecto: https://github.com/ChaitanyaMunje/QRCodeGenerator/tree/ExoPlayer

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *