【问题标题】:Can Exoplayer Stream mp3s Without Downloading The Full File?Exoplayer 可以在不下载完整文件的情况下流式传输 mp3 吗?
【发布时间】:2019-04-03 23:43:50
【问题描述】:
问题
如果将mp3文件保存到云端,即:Firebase Storage,可以在Android上用Exoplayer流式传输文件而不需要下载完整的文件大小吗?如果 mp3 可以直接从 Cloud Storage 流式传输,那么由于文件本身没有被下载,因此在传输流时使用了多少百分比的文件内存?
目标是避免比数据存储成本更昂贵的数据传输成本。
可能的解决方案
根据这篇 Medium Post Downloading Streams,看起来 DataSource 可以在不下载文件的情况下处理托管的 mp3 文件。但是,我不确定,如果这里有人可以确认那将是惊人的。
【问题讨论】:
标签:
java
android
kotlin
firebase-storage
exoplayer
【解决方案1】:
感谢 ExoPlayer 团队的 Oliver Woodman 解决了this question on Github!
如果将 mp3 文件保存到云端,即:Firebase Storage / Google Cloud Storage,是否可以从 Exoplayer 流式传输文件而无需下载完整文件大小?
是的。这正是您使用 ExoPlayer 播放流时默认发生的情况。
如果 mp3 可以直接从 Cloud Storage 流式传输,那么由于文件本身没有被下载,因此在传输流时使用了多少百分比的文件内存?
您可以通过实例化您自己的 DefaultLoadControl 来配置它,您可以在构建播放器时将其传递给 ExoPlayerFactory.newSimpleInstance。如果您需要更多控制,也可以从头开始实现自己的 LoadControl。
请注意,虽然提前缓冲越少可以节省数据传输成本,但它也使得重新缓冲更有可能发生,因为玩家将不太能够解决临时的网络连接问题。