android - 从 Firebase 存储流式传输 mp3
问题描述
问题
我正在构建一个后端服务,它为 Android 客户端创建 mp3 以通过ExoPlayer进行流式传输。
从长远来看Firebase 的存储定价,如果存储10 gbs和10,000 个用户,那么将有100,000 gb传输,这是非常昂贵的(11,600 美元)。
为了避免数据传输费用,在云上流式传输 mp3 的最佳解决方案是什么?
可能的解决方案
- 使用 ExoPlayer 直接从云端流式传输 mp3,无需下载。
- 使用单独的 API 一次从 Cloud Storage 下载10gb,然后从单独的 API 将 mp3 流式传输到移动客户端。
解决方案
可能的解决方案 #1是最好的解决方案:使用 ExoPlayer 直接从云端流式传输 mp3,无需下载。
感谢 ExoPlayer 团队的 Oliver Woodman 在Github 上解决了这个问题!
如果将 mp3 文件保存到云端,即:Firebase Storage / Google Cloud Storage,是否可以从 Exoplayer 流式传输文件而无需下载完整文件大小?
是的。这正是您使用 ExoPlayer 播放流时默认发生的情况。
如果 mp3 可以直接从 Cloud Storage 流式传输,那么由于文件本身没有被下载,因此在传输流时使用了多少百分比的文件内存?
您可以通过实例化您自己的 DefaultLoadControl 来配置它,您可以在构建播放器时将其传递给 ExoPlayerFactory.newSimpleInstance。如果您需要更多控制,也可以从头开始实现自己的 LoadControl。
请注意,虽然提前缓冲较少可以节省数据传输成本,但它也使重新缓冲更有可能发生,因为玩家将不太能够解决临时的网络连接问题。
推荐阅读
- python - 字典条目存储为参考后如何获取密钥
- json - 通过 XML 解析 json
- javascript - ReactJS Custom Hook 没有呈现预期的输出
- python - 高速公路:socket.gaierror:[Errno 11001] getaddrinfo 失败
- python - cv2.approxPolydp() 返回什么?
- signalr - 针对组中的特定用户
- ruby-on-rails - 从多个模型中搜索(弹性搜索)
- api - Agora 云端录制 API 查询(获取请求)响应 404
- android - 没有静态方法intArrayOf怎么解决?
- javascript - 服务工作者运行时上下文