【问题标题】:Stream mp3s From Firebase Storage从 Firebase 存储流式传输 mp3
【发布时间】:2018-10-30 19:45:28
【问题描述】:
问题
我正在构建一个后端服务,它为 Android 客户端创建 mp3 以通过ExoPlayer 进行流式传输。
从长远来看Firebase's Storage Pricing,如果存储有 10 gbs 并且 10,000 个用户 将有 100,000 gb 进行传输这非常昂贵(11,600 美元)。
在云上流式传输 mp3 以避免数据传输费用的最佳解决方案是什么?
可能的解决方案
- 使用 ExoPlayer 直接从云端流式传输 mp3,无需下载。
- 使用单独的 API 一次性从 Cloud Storage 下载 10gb,然后通过单独的 API 将 mp3 流式传输到移动客户端。
【问题讨论】:
标签:
android
mp3
firebase-storage
soundcloud
audio-streaming
【解决方案1】:
可能的解决方案 #1 是最佳解决方案:使用 ExoPlayer 直接从云端流式传输 mp3,无需下载。
感谢 ExoPlayer 团队的 Oliver Woodman 解决了this question on Github!
如果将 mp3 文件保存到云端,即:Firebase Storage / Google Cloud Storage,是否可以从 Exoplayer 流式传输文件而无需下载完整文件大小?
是的。这正是您使用 ExoPlayer 播放流时默认发生的情况。
如果 mp3 可以直接从 Cloud Storage 流式传输,那么由于文件本身没有被下载,因此在传输流时使用了多少百分比的文件内存?
您可以通过实例化您自己的 DefaultLoadControl 来配置它,您可以在构建播放器时将其传递给 ExoPlayerFactory.newSimpleInstance。如果您需要更多控制,也可以从头开始实现自己的 LoadControl。
请注意,虽然提前缓冲越少可以节省数据传输成本,但它也使得重新缓冲更有可能发生,因为玩家将不太能够解决临时的网络连接问题。