Миграция с ExoPlayer r1.5.12 на 2.7.3 - PullRequest
0 голосов
/ 26 апреля 2018

В настоящее время я использую версию r1.5.12 для воспроизведения файлов MP3 из InputStream, используя пользовательский UriDataSource.Я хотел бы обновить версию 2.7.3, но не уверен, какой класс заменяет ExtractorSampleSource или можно ли повторно использовать мой пользовательский класс UriDataSource с именем myDataSource в приведенном ниже коде:

int rendererCount=1;

ExoPlayer exoPlayer= ExoPlayer.Factory.newInstance(rendererCount);

/*check if file is present or not*/

File file=new File(getCacheDir(),"sample.mp3"); // location of file in the root directory of SD Card named "sample.mp3"

/*instantiate myDataSource*/
DataSource dataSource=new myDataSource(this);

ExtractorSampleSource extractorSampleSource=new ExtractorSampleSource(Uri.parse("sample.mp3"),dataSource,new DefaultAllocator(64*1024),64*1024*256);
TrackRenderer audio=new MediaCodecAudioTrackRenderer(extractorSampleSource, MediaCodecSelector.DEFAULT,null,true);

/*prepare ExoPlayer*/
exoPlayer.prepare(audio);
exoPlayer.setPlayWhenReady(true);

1 Ответ

0 голосов
/ 30 апреля 2018

Для воспроизведения MP3 с пользовательским источником данных в ExoPlayer 2 вы можете сделать что-то вроде этого:

CustomDataSourceFactory dataSourceFactory = new CustomDataSourceFactory();

File file = new File(getCacheDir(), "sample.mp3");
ExtractorMediaSource mediaSource =
    new ExtractorMediaSource.Factory(dataSourceFactory)
    .createMediaSource(Uri.fromFile(file));

player.prepare(mediaSource);
player.setPlayWhenReady(true);

Затем ваша CustomDataSourceFactory используется для создания источников данных:

public class CustomDataSourceFactory implements DataSource.Factory {
  @Override
  public DataSource createDataSource() {
    return new CustomDataSource();
  }
}

Портирование вашего v1 DataSource на v2 должно быть простым.Единственное изменение, по-видимому, это добавление метода getUri().

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

DefaultDataSourceFactory dataSourceFactory =
    new DefaultDataSourceFactory(this, Util.getUserAgent(this, "exo-demo"));
File file = new File(getCacheDir(), "sample.mp3");
ExtractorMediaSource mediaSource =
    new ExtractorMediaSource.Factory(dataSourceFactory)
    .createMediaSource(Uri.fromFile(file));

player.prepare(mediaSource);
player.setPlayWhenReady(true);
...