首页 > 解决方案 > 从 Firebase 存储流式传输 mp3

问题描述

问题

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

从长远来看Firebase 的存储定价,如果存储10 gbs10,000 个用户,那么将有100,000 gb传输,这是非常昂贵的(11,600 美元)。

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

可能的解决方案

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

标签: androidmp3firebase-storagesoundcloudaudio-streaming

解决方案


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

感谢 ExoPlayer 团队的 Oliver Woodman 在Github 上解决了这个问题

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

是的。这正是您使用 ExoPlayer 播放流时默认发生的情况。

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

您可以通过实例化您自己的 DefaultLoadControl 来配置它,您可以在构建播放器时将其传递给 ExoPlayerFactory.newSimpleInstance。如果您需要更多控制,也可以从头开始实现自己的 LoadControl。

请注意,虽然提前缓冲较少可以节省数据传输成本,但它也使重新缓冲更有可能发生,因为玩家将不太能够解决临时的网络连接问题。


推荐阅读