我正在使用Exoplayer 2.8.0,我在simpleList中填充了一系列音频流,使用通知按钮,下一步,预览和停止可以正常工作,但是如果要播放列表中的特定歌曲,它总是从列表中的第一首歌曲开始,无论我单击列表中的哪首歌曲,都始终从第一首开始。
这是我制作播放列表的方式:
// Create the Playlist from Array
mediaSources = new MediaSource[radioList_2.size()];
for (int i = 0; i < radioList_2.size(); i++) {
mediaSources[i] = new ExtractorMediaSource( Uri.parse(radioList_2.get(i)),
dataSourceFactory, extractorsFactory, null, null);
}
concatenatingMediaSource=new ConcatenatingMediaSource(mediaSources);
concatenatingMediaSource.addMediaSource(concatenatingMediaSource);
player.prepare(new ConcatenatingMediaSource(false,mediaSources));
sTartNotification();
这是我单击列表中的项目时使用的代码:
MediaSource mediaSource = new ExtractorMediaSource(Uri.parse(strUrl),
dataSourceFactory,
extractorsFactory,
mainHandler,
null);
// player.prepare(mediaSource);
//playerNotificationManager.setPlayer(null);
concatenatingMediaSource.addMediaSource(mediaSource);
player.prepare(new ConcatenatingMediaSource(true,mediaSource));
sTartNotification();
player.setPlayWhenReady(true);
//concatenatingMediaSource=new ConcatenatingMediaSource(mediaSource);
// concatenatingMediaSource.addMediaSource(0,mediaSource);
我也尝试过注释行,它开始播放,但随后导航按钮停止工作,就像播放列表不再退出一样。
我已阅读:How to play a particular video from ExoPlayer playlist android? 但是搜寻功能对我不起作用。
谢谢, 帮助将不胜感激
答案 0 :(得分:1)
尝试使用单个MediaSource并传递要播放的音频/视频的URL。如果您想搜索,请同时传递eventTime。
public void preparePlayer(String url, long lastEventTime) {
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, Util.getUserAgent(context, "XYZ"));
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource mediaSource;
if (url.endsWith(".m3u8")) {
mediaSource = new HlsMediaSource(Uri.parse(url), dataSourceFactory, null, null);
} else {
mediaSource = new ExtractorMediaSource(Uri.parse(url), dataSourceFactory, extractorsFactory, null, null);
}
// Prepare the player with the source.
simpleExolayer.prepare(mediaSource);
if (lastEventTime > 0) {
simpleExolayer.seekTo(lastEventTime * 1000);
}
}