android寻找代理流和stagefright播放器的问题

我想从仅在临时时间内有效的URL播放音频流.由于存在缓冲机制,仅通过使用内置的stagefright流功能不能很好地发挥作用(URL将在第二次填充缓冲区时死掉),所以我实现了一个代理流,类似于在npr应用中完成了什么

http://code.google.com/p/npr-android-app/source/browse/trunk/Npr/src/org/npr/android/news/StreamProxy.java

这实际上非常好用,除了一个例外,任何寻求调用都会有效地中断代理流.我很难确定寻觅在舞台表演中的工作方式.每当我寻找时,我都会收到一条消息

01-12 13:35:57.201: ERROR/(4870): Connection reset by peer
01-12 13:35:57.201: ERROR/(4870): java.net.socketException: Connection reset by peer
01-12 13:35:57.201: ERROR/(4870): at org.apache.harmony.luni.platform.OSNetworkSystem.writeSocketImpl(Native Method)
01-12 13:35:57.201: ERROR/(4870):     at org.apache.harmony.luni.platform.OSNetworkSystem.write(OSNetworkSystem.java:723)
01-12 13:35:57.201: ERROR/(4870):     at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:578)
01-12 13:35:57.201: ERROR/(4870):     at org.apache.harmony.luni.net.socketoutputStream.write(SocketoutputStream.java:59)
01-12 13:35:57.201: ERROR/(4870):     at com.soundcloud.utils.StreamProxy.processRequest(StreamProxy.java:209)

然后停顿几秒钟,然后stagefright重试以连接到相同的URL,通常会引发错误(我想是因为未重置代理流).另一个潜在的问题是,代理流似乎总是会线性读取数据源:

while (isRunning && (readBytes = data.read(buff, 0, buff.length)) != -1) 

我只是在猜测,但我认为为了支持查找,代理从缓冲区读取时必须能够提供偏移量.有没有办法找出从套接字客户端请求的偏移量(预期的查找位置)?

我对套接字的经验有限.有人在这里有实施建议吗?

解决方法:

MediaPlayer正在发出HTTP范围请求,该请求指定播放器期望的字节偏移量.您可以从提交给代理服务器的请求的标头中读取这些范围值.然后,您可以打开仅将这些范围发送回MediaPlayer.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...