我想从仅在临时时间内有效的URL播放音频流.由于存在缓冲机制,仅通过使用内置的stagefright流功能不能很好地发挥作用(URL将在第二次填充缓冲区时死掉),所以我实现了一个代理流,类似于在npr应用中完成了什么
这实际上非常好用,除了一个例外,任何寻求调用都会有效地中断代理流.我很难确定寻觅在舞台表演中的工作方式.每当我寻找时,我都会收到一条消息
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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。