2015-06-15 85 views
3

是否有可能將位於應用程序的原始文件夾中的mp3文件設置爲ExoPlayer?ExoPlayer從原始文件夾中讀取mp3文件

我試着用下面的代碼片段來實現它沒有成功遺憾的是:

mMediaPath = "android.resource://" + getPackageName() + File.separator + R.raw.ringtone; 

任何幫助,不勝感激!

+0

是。放入原始文件夾的資產不會被APPT觸及。有很多方法可以實現這一點;但首先,你的原始文件夾裏面的res文件夾? –

+0

是的,它位於res文件夾內。 –

+0

@GeorgeD你有沒有發現任何可能性? –

回答

1

我無法從原始文件加載mp3文件,因此我最終將它們移動到資產目錄,按照與ExoPlayer的作者之一的討論。 (https://github.com/google/ExoPlayer/issues/556

這是我從資產訪問的mp3文件,如果有人需要它的未來:

mMediaPath = "asset:///my_ringtone.mp3"; 

,並將此路徑DemoPlayer如下:

new DemoPlayer(new ExtractorRendererBuilder(this, userAgent, Uri.parse(mMediaPath), null, new Mp3Extractor())); 

感謝所有願意回答我的問題。

3

可以從原始文件夾加載文件,關鍵是使用RawSourceDataSource

下面是一個例子(在科特林),以在原目錄中的mp3file創建LoopingMediaSource

 
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(source)