Я использую Exoplayer с базой DemoPlayer . Я хочу перезапустить / воспроизвести видео, начиная с некоторого действия пользователя после отправки ExoPlayer.STATE_ENDED .
Я попытался использовать seekTo(0)
и mPlayer.setPlayWhenReady(true);
После того, как он ничего не сделал, вообще.
Я обновил библиотеку до ExoPlayer r1.4.2
и он выполняет эту работу …
mPlayer.seekTo(0); mPlayer.setPlayWhenReady(true); // replay from start
// Пауза после перезапуска
mPlayer.seekTo(0); mPlayer.setPlayWhenReady(false);
Видео можно легко комбинировать с помощью LoopingMediaSource. В следующем примере цикл выполняется бесконечно. Также можно указать счетчик конечных циклов при создании LoopingMediaSource.
MediaSource source = new ExtractorMediaSource(videoUri, ...); // Loops the video indefinitely. LoopingMediaSource loopingSource = new LoopingMediaSource(source);
Или добавить слушателя
playerExo.addListener(new ExoPlayer.Listener() { @Override public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { switch(playbackState) { case ExoPlayer.STATE_BUFFERING: break; case ExoPlayer.STATE_ENDED: playerExo.seekTo(0); break; case ExoPlayer.STATE_IDLE: break; case ExoPlayer.STATE_PREPARING: break; case ExoPlayer.STATE_READY: break; default: break; } } @Override public void onPlayWhenReadyCommitted() { } @Override public void onPlayerError(ExoPlaybackException error) { } }); playerExo.seekTo(0); playerExo.setPlayWhenReady(true);