我的应用程序需要很长时间来准备和缓冲音频流.我已经读过这个问题为什么Android的MediaPlayer需要这么长的时间来准备一些直播的流媒体?然而,它只是说人们已经遇到过这个问题,它没有说明如何改善这个问题.
我在所有版本的Android中都遇到过这种情况,从2.2 - 4.1.2开始测试.
这些流具有适合移动和3G连接的比特率.在相同的iOS应用程序中,相同的流只需不到一秒钟即可开始缓冲.
有没有办法指定应该缓冲的时间量?我知道Tune In广播应用程序提供此功能(https://play.google.com/store/apps/details?id=tunein.player).
谢谢.
编辑:我再次测试,发现它只发生在运行Gingerbread及以上的设备上(> = 2.3).我知道Android将底层框架从OpenCore改为StageFright.那么我该如何优化媒体框架呢?旧的HTC Wildfire可以准备,流式传输和播放,这比全新的HTC One X和Nexus 7快10倍.
可能重复:
Android:"意外的流结束"异常下载大文件
我正在低估一个大约的档案.5MB使用HttpURLConnection但是在downlod期间的一半我在我的代码的这一行得到了"意外的流结束"错误:
while ((count = input.read(data)) > 0) {
Run Code Online (Sandbox Code Playgroud)
这是LOG:
11-20 16:05:55.749: ERROR/PRINTSTACK(3425): STACK:unexpected end of stream
11-20 16:05:55.749: WARN/System.err(3425): java.io.IOException: unexpected end of stream
11-20 16:05:55.749: WARN/System.err(3425): at org.apache.harmony.luni.internal.net.www.protocol.http.FixedLengthInputStream.read(FixedLengthInputStream.java:47)
11-20 16:05:55.749: WARN/System.err(3425): at java.io.BufferedInputStream.read(BufferedInputStream.java:319)
11-20 16:05:55.749: WARN/System.err(3425): at java.io.FilterInputStream.read(FilterInputStream.java:133)
11-20 16:05:55.759: WARN/System.err(3425): at com.conjure.skiproj.DownloadService$Job.process(DownloadService.java:265)
11-20 16:05:55.759: WARN/System.err(3425): at com.conjure.skiproj.DownloadService$1.run(DownloadService.java:193)
11-20 16:05:55.759: WARN/System.err(3425): at java.lang.Thread.run(Thread.java:1019)
Run Code Online (Sandbox Code Playgroud)
帮助!! 1
编辑:有关设置输入流的代码的更多信息:
HttpURLConnection conexion = (HttpURLConnection)url.openConnection();
conexion.setRequestMethod("GET");
conexion.setReadTimeout(20000);
conexion.connect();
File file = new File(root.getAbsolutePath()+"/", fileName);
int lenghtOfFile = conexion.getContentLength();
InputStream input …Run Code Online (Sandbox Code Playgroud)