From 3913ff8c45f93a4eafc3a492143ecca049757e9c Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sat, 25 Jan 2020 14:32:43 +0100 Subject: Make seeking more reliable --- .../antennapod/core/service/playback/ExoPlayerWrapper.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'core/src') diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java index c250cd17f..8f7e84561 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java @@ -16,8 +16,9 @@ import com.google.android.exoplayer2.SeekParameters; import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.audio.AudioAttributes; -import com.google.android.exoplayer2.source.ExtractorMediaSource; +import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory; import com.google.android.exoplayer2.source.MediaSource; +import com.google.android.exoplayer2.source.ProgressiveMediaSource; import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.trackselection.TrackSelectionArray; @@ -71,7 +72,7 @@ public class ExoPlayerWrapper implements IPlayer { loadControl.setBackBuffer(UserPreferences.getRewindSecs() * 1000 + 500, true); SimpleExoPlayer p = ExoPlayerFactory.newSimpleInstance(mContext, new DefaultRenderersFactory(mContext), new DefaultTrackSelector(), loadControl.createDefaultLoadControl()); - p.setSeekParameters(SeekParameters.PREVIOUS_SYNC); + p.setSeekParameters(SeekParameters.EXACT); p.addListener(new Player.EventListener() { @Override public void onTimelineChanged(Timeline timeline, Object manifest, int reason) { @@ -170,7 +171,7 @@ public class ExoPlayerWrapper implements IPlayer { @Override public void prepare() throws IllegalStateException { - mExoPlayer.prepare(mediaSource); + mExoPlayer.prepare(mediaSource, false, true); } @Override @@ -216,7 +217,9 @@ public class ExoPlayerWrapper implements IPlayer { DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, true); DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext, null, httpDataSourceFactory); - ExtractorMediaSource.Factory f = new ExtractorMediaSource.Factory(dataSourceFactory); + DefaultExtractorsFactory extractorsFactory = new DefaultExtractorsFactory(); + extractorsFactory.setConstantBitrateSeekingEnabled(true); + ProgressiveMediaSource.Factory f = new ProgressiveMediaSource.Factory(dataSourceFactory, extractorsFactory); mediaSource = f.createMediaSource(Uri.parse(s)); } -- cgit v1.2.3