Для воспроизведения 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);