【发布时间】:2011-02-25 07:37:34
【问题描述】:
我在 SO 上看到很多帖子问这个问题,但似乎没有明确的答案(或者至少是我喜欢的答案!)
我的内容受到基本身份验证(用户名/密码)的保护——我可以使用各种 HTTP 下载类很好地下载它,但对于我来说,我无法弄清楚如何告诉媒体播放器流式传输它(并提供身份验证)。我看到一篇帖子暗示这是不可能的,因为 MediaPlayer 都是本机代码,不像 Authenticator。
有很多关于如何首先下载到缓存副本然后播放的示例,但是....那种糟透了(文件可能有 100 个 MB)。我看到至少一个建议以小块下载它,然后开始和停止播放(重定向到新文件),但这也很糟糕,因为(我认为)会出现口吃(虽然我还没有尝试过) )
此时我的最佳想法是开始下载到缓存文件,然后当它“足够”时开始播放,同时我继续填充文件......我希望这可行(但同样,还没有尝试过)。
我是否遗漏了一些明显的东西?让所有不同的部分几乎都能正常工作真是太痛苦了,我有点说服自己,必须有一种方法来本地流式传输受保护的内容(或者让它采用已经建立和合格的 InputStream),但这似乎并不快乐。
顺便说一句,我是 Mac/iPhone 用户,也是 Android 的新手,所以我仍在努力学习一点 Java。如果我遗漏了一些明显的东西,请原谅。
【问题讨论】:
-
来自developer.android.com/guide/topics/media/index.html, "注意:如果您将 URL 传递给在线媒体文件,该文件必须能够进行渐进式下载。"如果不是这样,它会发布一些代码。
-
嘿@loghound 你找到解决方案了吗?除了您的考虑之外,我还在考虑使用 cookie 之类的东西来存储凭据,也许 android 流功能会抓住它。
-
我还发现您无法流式传输 HTTPS。作为一种解决方法,我们实现了渐进式播放,它可以工作,但它需要很多代码。
-
从未找到答案,但有人建议只打开一个网络视图并使用普通的 html/javascript 进行身份验证(这是个好主意,但我从未走得那么远)
-
@OliverMoffat 我不知道这是不是真的,我现在可以流式传输 HTTPS 内容了。
标签: android authentication streaming media-player