воспроизвести определенный файл из списка воспроизведения с помощью ExoPlayer 2.8

Я работаю с 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);

Я тоже пробовал строки комментариев, он начинает играть, но затем перестают работать кнопки навигации, как будто плейлист больше не выходит.

Я прочитал это: Как воспроизвести определенное видео из Плейлист ExoPlayer для Android? но функция поиска у меня не работает.

Спасибо, помощь будет оценена


person Oscar Portorreal    schedule 03.10.2018    source источник
comment
проверьте эту ссылку: github.com/google/ExoPlayer/issues/4375   -  person Abhinav Gupta    schedule 03.10.2018


Ответы (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);
    }
}
person Zeero0    schedule 03.10.2018
comment
Спасибо, @zeero, с этим кодом воспроизводится то, что я нажимаю, что хорошо, но кнопки навигации по-прежнему не работают, похоже, что список воспроизведения уничтожен. - person Oscar Portorreal; 03.10.2018
comment
Вам нужно самостоятельно обрабатывать кнопки навигации, как в nextButton. Щелкните индекс увеличения и получите новый URL-адрес, а затем вызовите метод preparePlayer. - person Zeero0; 05.10.2018
comment
Еще раз спасибо, есть ли ссылка, где я могу об этом прочитать? Любой пример кода? Это было бы прекрасно. Спасибо, Оскар - person Oscar Portorreal; 08.10.2018