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