У меня есть несколько видео, которые нужно воспроизвести одно за другим. После создания MediaSource каждого видео, все это будет ConcatenatingMediaSource(mediaSources[])
. Обычно они проигрываются по очереди. Но когда видео перематывается вперед с использованием seekTo()
, первое видео нормально, но другие видео не следуют за seekTo()
.
Предположим, 1-е видео - это 10 секунд, 2-е - 12, 3-е - 10 секунд. Если я позвоню seekTo((long)12*1000)
, он должен проиграть 2-е видео с перемоткой на 2 секунды вперед. Но играет с начала 2-го видео.
Настройка источников видео
DefaultDataSourceFactory defaultDataSourceFactory = new DefaultDataSourceFactory(getApplicationContext(),Util.getUserAgent(getApplicationContext(), "ExoPlayer"));
MediaSource mediaSource = new ExtractorMediaSource.Factory(defaultDataSourceFactory).createMediaSource(videoItem.getVideoUri());
videoItemArrayList.get(k).setVideoSource(mediaSource);
Объединить источники
MediaSource[] mediaSources = new MediaSource[videoItemArrayList.size()];
int j=0;
for(VideoItem item : videoItemArrayList){
mediaSources[j] = item.getVideoSource();
++j;
}
concatenatedSource = new ConcatenatingMediaSource(mediaSources);
Настроить exoplayer
exoPlayer.prepare(concatenatedSource);
exoPlayer.seekTo(0);
exoPlayer.setPlayWhenReady(true);
exoPlayer.getPlaybackState();