es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cargar los datos de video desde una URL solo durante 2 segundos, para reproducir el video únicamente durante los primeros 2 segundos.

Quiero reproducir videos solo durante los primeros 2 segundos (recyclerView). Entonces, para una mejor administración de la memoria, quiero transmitir un video de máximo 2 segundos desde la URL proporcionada en línea.

El siguiente código reproduce el video de inmediato, pero carga todo el video.

try {
    TrackSelector trackSelector = new DefaultTrackSelector();
    DefaultLoadControl loadControl = new DefaultLoadControl.Builder().setBufferDurationsMs(32 * 1024, 64 * 1024, 1024, 1024).createDefaultLoadControl();
    exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);
    //exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector);

    Uri videouri = Uri.parse("https://bucket.s3.amazonaws.com/vidos/d293c6d7-8b2d-436a-998d-a454476485a4.mp4");
    DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");

    ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
    MediaSource mediaSource = new ExtractorMediaSource(videouri, dataSourceFactory, extractorsFactory, null, null);
    exoPlayerView.setPlayer(exoPlayer);
    exoPlayer.prepare(mediaSource);
    exoPlayer.setPlayWhenReady(true);
} catch (Exception e) {
    logAppE(TAG, "Error: " + e.getMessage());
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para transmitir solo los primeros 2 segundos de un video desde una URL en línea dada, puedes usar el siguiente fragmento de código:

    try {
         TrackSelector trackSelector = new DefaultTrackSelector();
         DefaultLoadControl loadControl = new DefaultLoadControl.Builder().setBufferDurationsMs(32 * 1024, 64 * 1024, 1024, 1024).createDefaultLoadControl();
    
         exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);
         Uri videouri = Uri.parse("https://bucket.s3.amazonaws.com/vidos/d293c6d7-8b2d-436a-998d-a454476485a4.mp4");
    
         DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");
         ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
         MediaSource mediaSource = new ExtractorMediaSource(videouri, dataSourceFactory, extractorsFactory, null, null);
    
         // Establecer la posición de búsqueda en 0 (inicio del video)
         exoPlayer.seekTo(0);
         // Establecer la velocidad de reproducción en 2x
         exoPlayer.setPlaybackParameters(new PlaybackParameters(2f));
         // Establecer la duración máxima en 2 segundos
         exoPlayer.setStopAtively(true);
         exoPlayer.setStopPosition(2000);
         // Preparar y reproducir el video
         exoPlayerView.setPlayer(exoPlayer);
         exoPlayer.prepare(mediaSource);
         exoPlayer.setPlayWhenReady(true);
    
    } catch (Exception e) {
        logAppE(TAG, "Error : " + e.getMessage());
    }
    

    Explicación:
    – El método seekTo se utiliza para establecer la posición de búsqueda al inicio del video (0 milisegundos).
    – El método setPlaybackParameters se utiliza para aumentar la velocidad de reproducción a 2x.
    – El método setStopPosition se utiliza para establecer la duración máxima en 2 segundos (2000 milisegundos).
    – El método setStopActively se utiliza para detener la reproducción activamente en la posición de detención (2 segundos).
    – El resto del código es el mismo que el código original, el cual configura el ExoPlayer y reproduce el video.

Comments are closed.