I want to play a list of videos in my app. I am using exoplayer for it. I have links of all the videos in an arrayList. But the problem is that the video each video is taking 4-5 seconds to load. My load control settings:
public static final int MIN_BUFFER_DURATION = 2000;
//Max Video you want to buffer during PlayBack
public static final int MAX_BUFFER_DURATION = 5000;
//Min Video you want to buffer before start Playing it
public static final int MIN_PLAYBACK_START_BUFFER = 1500;
//Min video You want to buffer when user resumes video
public static final int MIN_PLAYBACK_RESUME_BUFFER = 2000;
loadControl = new DefaultLoadControl.Builder()
.setAllocator(new DefaultAllocator(true, 30))
.setBufferDurationsMs(MIN_BUFFER_DURATION,
MAX_BUFFER_DURATION,
MIN_PLAYBACK_START_BUFFER,
MIN_PLAYBACK_RESUME_BUFFER)
.setTargetBufferBytes(-1)
.setPrioritizeTimeOverSizeThresholds(true).createDefaultLoadControl();
MediaSource mediaSource = new ExtractorMediaSource(Uri.parse(videoURL),
new CacheDataSourceFactory(getContext(), 100 * 1024 * 1024, 5 * 1024 * 1024), new DefaultExtractorsFactory(), null, null);
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode = DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER;
renderersFactory = new DefaultRenderersFactory(getContext()).setExtensionRendererMode(extensionRendererMode);
player = new SimpleExoPlayer.Builder(getContext())
.setTrackSelector(trackSelector)
.setLoadControl(loadControl)
.build();
PlaybackParameters param = new PlaybackParameters(1, 1);
//param.setSpeed(0.88f);// 1f is 1x, 2f is 2x
player.setPlaybackParameters(param);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
I want my videos to play as soon as I get the video url as they play in apps like tik tok and Likee