如何从firebase存储流式传输mp3音频

时间:2016-12-24 17:18:51

标签: firebase firebase-storage

我正在开发一个应用程序来流式传输存储在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存储中的名称。

3 个答案:

答案 0 :(得分:4)

如果您想从Firebase存储分区中获取文件,则有两种选择。

  1. 使用可从存储参考中获取的完整下载URL,该存储参考指向存储桶中的文件路径。
  2. 使用下载任务(Android或iOS)从文件中获取数据。
  3. 您无法从移动应用中以任何其他方式获取文件数据。 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通过媒体播放器流式传输音频文件