
我想从仅在临时时间内有效的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 peer01-12 13:35:57.201: ERROR/(4870): java.net.socketException: Connection reset by peer01-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寻找代理流和stagefright播放器的问题全部内容,希望文章能够帮你解决android寻找代理流和stagefright播放器的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)