Я пытаюсь передавать потоковое аудио из Firebase Storage и использую Exoplayer для воспроизведения аудио. Но, насколько я понимаю, Exoplayer не поддерживает хранилище downloadUrls, и я получаю исключение.
Вопрос:
Могу ли я адаптировать URL для Exoplayer? Есть ли способ сделать это?
Пример URL: https://firebasestorage.googleapis.com/v0/b/........appspot.com/o/........%2Falways.mp3?alt=media&token=23881b5b-81af-48d1-80cb-4adb8672cc6d
Код:
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReference();
StorageReference kelimeler = storageRef.child("filesPath");
player = ExoPlayerFactory.newSimpleInstance(getContext());
PlayerView playerView = view.findViewById(R.id.player_view);
playerView.setPlayer(player);
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getContext(),
Util.getUserAgent(getContext(), "appName"));
kelimeler.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
MediaSource mediaSource = new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(uri);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
}
});
Исключение:
com.google.android.exoplayer2.source.UnrecognizedInputFormatException: ни один из доступных экстракторов (MatroskaExtractor, FragmentedMp4Extractor, Mp4Extractor, Mp3Extractor, AdtsExtractor, Ac3Extractor, экстрактор Eractractor, экстрактор Extractor, экстрактор-экстрактор
at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractorHolder.selectExtractor(ExtractorMediaPeriod.java:973)
at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:891)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:379)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)