我正在开发一个应用程序来流式传输存储在firebase存储中的mp3文件。几乎我有100首歌曲,如song1,song2,song3 .....如果选择了一首歌,我必须在不下载的情况下播放该特定歌曲。在这种情况下,我需要编写大量代码,因为对于每首歌我都要提到firebase存储URL。网址就像
https://firebasestorage.googleapis.com/......song1.mp3?alt=media&token=8a8a0593-e8bb-40c7-87e0-814d9c8342f3
对于每首歌曲,网址的 alt = media& token = 部分会有所不同,所以我必须提及所有歌曲的唯一网址。但是在这里我需要一些简化的编码来播放歌曲,只需在firebase存储中提及它的名字。
请建议一种流式传输音频文件的方法,只使用存储在firebase存储中的名称。
答案 0 :(得分:4)
如果您想从Firebase存储分区中获取文件,则有两种选择。
您无法从移动应用中以任何其他方式获取文件数据。 Firebase存储不支持特殊媒体流协议,例如RTSP。
答案 1 :(得分:1)
我是使用downloadUrl
完成的。
val storage = FirebaseStorage.getInstance()
storage.reference.child("songs/song1.mp3").downloadUrl.addOnSuccessListener({
val mediaPlayer = MediaPlayer()
mediaPlayer.setDataSource(it.toString())
mediaPlayer.setOnPreparedListener { player ->
player.start()
}
mediaPlayer.prepareAsync()
})
答案 2 :(得分:0)
StorageReference filepath=storage.child("Audio").child(timeStamp+".mp3");
Uri uri=Uri.fromFile(new File(fileName));
filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
String audio_url=taskSnapshot.getDownloadUrl().toString();
使用audio_url
通过媒体播放器流式传输音频文件