【问题标题】:how to stream a mp3 audio from firebase storage如何从 Firebase 存储流式传输 mp3 音频
【发布时间】:2017-05-09 23:33:30
【问题描述】:

我正在开发一个应用程序,它将流式传输存储在 firebase 存储中的 mp3 文件。几乎我有 100 首歌曲,如歌曲 1、歌曲 2、歌曲 3 ......如果选择了一首歌曲,我必须在不下载的情况下流式传输该特定歌曲。在这种情况下,我需要编写大量代码,因为对于每首歌曲,我都必须提及 firebase 存储 url。网址就像

https://firebasestorage.googleapis.com/......song1.mp3?alt=media&token=8a8a0593-e8bb-40c7-87e0-814d9c8342f3

对于每首歌曲,url 的 alt=media&token= 部分各不相同,因此我必须提及所有歌曲的唯一 url。但在这里,我需要一些简化的编码,通过从 firebase 存储中单独提及歌曲的名称来播放歌曲。

请建议一种仅使用存储在 firebase 存储中的名称来流式传输音频文件的方法。

【问题讨论】:

  • 您使用什么语言编写应用程序?

标签: firebase firebase-storage


【解决方案1】:

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

  1. 使用完整的下载 url,您可以从指向存储桶中文件路径的存储参考中获取。
  2. 使用下载任务(Android 或 iOS)从文件中获取数据。

您无法通过任何其他方式从移动应用程序中获取文件数据。 Firebase 存储不支持特殊的媒体流协议,例如 RTSP。

【讨论】:

    【解决方案2】:

    我是使用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()
    })
    

    【讨论】:

      【解决方案3】:
      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通过媒体播放器流式传输音频文件

      【讨论】:

      • 它是浏览器中使用的javascript吗?还是安卓应用?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 2016-02-12
      • 2019-11-04
      • 2019-10-04
      相关资源
      最近更新 更多