小编Dha*_*win的帖子

在SDK 8中使用Android MediaPlayer进行流式处理

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无法连接到我的本地代理.它应该与没有元数据的原始源连接相同,这确实有效.我通过我的代理(包括内容类型)转发来自外部源的所有标头.

我会继续研究它,但我觉得我已经走到了尽头.如果需要更多细节,请告诉我.

proxy android stream media-player android-2.2-froyo

14
推荐指数
1
解决办法
7553
查看次数

标签 统计

android ×1

android-2.2-froyo ×1

media-player ×1

proxy ×1

stream ×1