从 Firebase 存储流式传输 mp3

Stream mp3s From Firebase Storage

问题

我正在构建后端服务,为 Android 客户端创建 mp3 以通过 ExoPlayer 流式传输。

从长远来看 Firebase's Storage Pricing,如果有 10 gbs 存储和 10,000 个用户 将会 100,000 gb 传输非常昂贵(11,600 美元)。

在云端流式传输 mp3 以避免数据传输费用的最佳解决方案是什么?

可能的解决方案

  1. 使用 ExoPlayer 直接从云端播放 mp3,无需下载。
  2. 使用单独的 API 从云存储下载 10gb 一次,然后从单独的 API 将 mp3 流式传输到移动客户端。

可能的解决方案 #1 是最佳解决方案:使用 ExoPlayer 直接从云端流式传输 mp3,无需下载。

感谢 ExoPlayer 团队的 Oliver Woodman 解决 this question on Github!

如果 mp3 文件保存到云端,ie:Firebase 存储/Google 云存储,是否可以从 Exoplayer 流式传输文件而无需下载完整文件大小?

Yes. That's just what happens by default when you use ExoPlayer to play a stream.

如果可以直接从 Cloud Storage 流式传输 mp3,由于文件本身并未下载,因此在传输流时大约使用了多少百分比的文件内存?

You can configure this by instantiating your own DefaultLoadControl, which you can pass to ExoPlayerFactory.newSimpleInstance when building the player. You can also implement your own LoadControl from scratch if you need more control.

Note that whilst buffering less far ahead saves on data transfer costs, it also makes re-buffers more likely to occur because the player will be less able to ride out temporary network connectivity issues.