【发布时间】:2019-05-09 21:39:19
【问题描述】:
我有多个视频要一一播放。创建每个视频的 MediaSource 后,所有这些都将发送到 ConcatenatingMediaSource(mediaSources[])。一般是一一播放。但是当视频使用seekTo()快进时,第一个视频可以,但其他视频不跟随seekTo()。
假设第一个视频是 10 秒,第二个 12 秒,第三个 10 秒。
如果我打电话给seekTo((long)12*1000),它应该以 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.prepare(concatenatedSource);
exoPlayer.seekTo(0);
exoPlayer.setPlayWhenReady(true);
exoPlayer.getPlaybackState();
【问题讨论】:
标签: android exoplayer2.x