如何在exo播放器的媒体源列表中设置特定索引?

时间:2019-05-13 11:53:45

标签: android exoplayer2.x

您好,我安装了ExoPlayer V2,并且数组列表的大小为10(例如10首歌曲),但是当启动ExoPlayer时,音频媒体播放器总是从指定索引或位置开始播放第一首歌曲(我需要开始第五首歌)

for (ModelRadio sample : modelRadios) {
     MediaSource mediaSource = new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(sample.get_radio_url()));
            concatenatingMediaSource.addMediaSource(mediaSource);
     }

player.seekTo(5); // i don't know this method will work or not?
player.prepare(concatenatingMediaSource);
player.setPlayWhenReady(true);

3 个答案:

答案 0 :(得分:0)

我从github得到了答案

import com.google.android.exoplayer2.C;
player.seekTo(5, C.INDEX_UNSET);
player.prepare(concatenatingMediaSource, false, false);
player.setPlayWhenReady(true);

答案 1 :(得分:0)

作为@Para M答案的补充。

  

player.seekTo(5)

在5毫秒开始播放曲目

  

player.seekTo(5,C.INDEX_UNSET)

将windowIndex(播放列表的索引)设置为5,第二个参数确定从何处开始(以毫秒为单位)。我不认为您应该使用index_unset,因为它是一个值为-1的常量,并且恰好是从头开始。

如果您想使用此方法在曲目索引5处开始播放列表,并且无需在特定时间开始曲目,我想您可能也可以使用:

  

player.seekToDefaultPosition(5)

答案 2 :(得分:0)

对于我的情况,这可行:

player?.prepare(mediaSource)
player?.playWhenReady = true
player?.seekToDefaultPosition(index)

也就是说,在调用prepare方法帮助后调用seekToDefault