ExoPlayer 从原始文件夹读取 mp3 文件

Zso*_*sár 7 android exoplayer

是否有可能将位于应用程序原始文件夹中的 mp3 文件设置为 ExoPlayer?

不幸的是,我尝试使用以下代码片段来实现它,但没有成功:

mMediaPath = "android.resource://" + getPackageName() + File.separator + R.raw.ringtone;
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏!

Aar*_* He 5

可以从原始文件夹加载文件,关键是使用RawSourceDataSource.

这是LoopingMediaSource在原始目录中为 mp3file创建一个示例(在 Kotlin 中):

val uri = RawResourceDataSource.buildRawResourceUri(R.raw.mp3file)
val dataSource = RawResourceDataSource(this)
dataSource.open(DataSpec(uri))

val source = ExtractorMediaSource(uri, DataSource.Factory { dataSource }, Mp3Extractor.FACTORY, null, null)

LoopingMediaSource(来源)


Zso*_*sár 2

我无法从原始文件加载 mp3 文件,因此根据与 ExoPlayer 的作者之一的讨论,我最终将它们移动到 asset 目录。(https://github.com/google/ExoPlayer/issues/556

如果将来有人需要的话,这就是我从资产中访问 mp3 文件的方式:

mMediaPath = "asset:///my_ringtone.mp3";
Run Code Online (Sandbox Code Playgroud)

并将此路径添加到 DemoPlayer 中,如下所示:

new DemoPlayer(new ExtractorRendererBuilder(this, userAgent, Uri.parse(mMediaPath), null, new Mp3Extractor()));
Run Code Online (Sandbox Code Playgroud)

感谢所有愿意回答我问题的人。