如何在Android上使用MediaPlayer流式传输经过身份验证的内容

log*_*und 14 authentication streaming android media-player

我已经看过很多帖子在SO上提出这个问题,但似乎没有一个确定的答案(或者至少是我喜欢的答案!)

我有基本身份验证(用户名/密码)背后的内容保护 - 我可以使用各种HTTP下载条款下载它,但对于我的生活,我无法理清如何告诉媒体播放器流式传输(并提供认证).我看到一篇帖子暗示它是不可能的,因为MediaPlayer是所有本机代码而不是像Authenticator那样的东西.

有很多例子说明如何首先下载到缓存副本然后再播放但是....那种糟糕的(文件可能是100的MB).我看到至少有一个建议以小块的形式下载它,然后开始和停止播放(重定向到新文件),但那种情况也很糟糕,因为我认为这是一个口吃(我还没有尝试过) )

我现在最好的想法是开始下载到缓存文件,然后当它"足够"时启动播放,同时我继续填充文件....我希望这有效(但是,再次,没有尝试过).

我错过了一些明显的东西吗 让各种各样的作品几乎正常工作真是太痛苦了,我有点说服自己必须有一种本地传输受保护内容的方法(或者让它采用已经建立的合格的InputStream),但它似乎没有乐趣.

顺便说一下,我是Mac/iPhone的家伙和Android的新手,所以我还在努力学习Java ......如果我错过了一些明显的东西,请相信.

Chr*_*ton 2

如果您控制服务器,一种选择可能是对其进行修改,以便可以选择在身份验证时为内容生成临时的随机 URL,然后进行流式传输。流函数是否接受包含脚本参数的 URL?

要完全在手机上完成操作,另一种选择是用 java 或本机代码编写一个简单的 http 代理(如服务器),并在后台线程中运行它。您无需将媒体播放器指向服务器,而是将其指向您自己的设备上代理。代理将请求传递到远程服务器,同时处理身份验证。