【发布时间】:2011-05-11 16:44:16
【问题描述】:
SDK 8 级 (Froyo) 引入了 MediaPlayer 连接到流媒体源的本机功能,例如 Shoutcast。以前的 SDK 版本能够解决问题,例如在设备上运行本地代理(请参阅 NPR)。
我采用了与 NPR 相同的方法,并且正在使用 StreamProxy。但是,NPR 首先检查当前运行的 SDK 是否小于 8。如果是,则使用代理。否则直接连接。
我的 StreamProxy 从 Shoutcast 服务器请求元数据,因此它不会简单地将数据从 Shoutcast 路由到我的客户端。相反,它解析出元数据并相应地使用它,并且只路由音乐数据。
在 SDK 8 级或更高级别尝试使用 StreamProxy 时,MediaPlayer 无法准备。我的 StreamProxy 接收连接并接受它,但在成功将状态行和标头写入客户端后,下一次写入会产生 java.net.SocketException: Connection reset by peer。这会导致客户端的媒体播放器抛出 Error(1,-1007)。
我试图找出 MediaPlayer 无法连接到我的本地代理的原因。它应该与在没有元数据的情况下连接到原始源相同,确实有效。我正在通过我的代理转发来自外部源的所有标头,其中包括内容类型。
我会继续研究它,但我觉得我陷入了死胡同。如果需要更多详细信息,请告诉我。
【问题讨论】:
-
SHOUTcast怎么玩?stackoverflow.com/a/8833346/265167
标签: android proxy stream media-player android-2.2-froyo