【问题标题】:Getting exception "unexpected end of stream" while downloading video in android在android中下载视频时出现异常“流的意外结束”
【发布时间】:2014-12-23 12:52:47
【问题描述】:

我尝试从服务器下载视频,这是我的 android 应用程序中 250mb 到 300mb 左右的大视频。我的代码适用于 30mb 到 40mb 左右的小视频,但下载大视频时出现异常。例外情况如下:

10-28 10:11:57.222: D/Error....(4617): java.io.IOException: 流意外结束 10-28 10:11:57.227: W/System.err(4617): java.io.IOException: 流意外结束 10-28 10:11:57.232: W/System.err(4617): 在 libcore.net.http.FixedLengthInputStream.read(FixedLengthInputStream.java:48) 10-28 10:11:57.232: W/System.err(4617): 在 java.io.BufferedInputStream.read(BufferedInputStream.java:304) 10-28 10:11:57.237: W/System.err(4617): 在 java.io.InputStream.read(InputStream.java:163) 10-28 10:11:57.237: W/System.err(4617): 在 com.photography.khalid.PreviewVideo.DownloadFile(PreviewVideo.java:1079) 10-28 10:11:57.237: W/System.err(4617): 在 com.photography.khalid.PreviewVideo$DownLoadVideoFile.doInBackground(PreviewVideo.java:1121) 10-28 10:11:57.242: W/System.err(4617): 在 com.photography.khalid.PreviewVideo$DownLoadVideoFile.doInBackground(PreviewVideo.java:1) 10-28 10:11:57.242: W/System.err(4617): 在 android.os.AsyncTask$2.call(AsyncTask.java:264) 10-28 10:11:57.242: W/System.err(4617): 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 10-28 10:11:57.242: W/System.err(4617): 在 java.util.concurrent.FutureTask.run(FutureTask.java:137) 10-28 10:11:57.247: W/System.err(4617): 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 10-28 10:11:57.247: W/System.err(4617): 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 10-28 10:11:57.252: W/System.err(4617): 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 10-28 10:11:57.252: W/System.err(4617): at java.lang.Thread.run(Thread.java:856)

我尝试使用此链接找到有关堆栈溢出的解决方案 link 但我仍然在大尺寸视频上遇到错误。

我的代码如下所示

public void DownloadFile(String fileURL, String fileName) {
    try {

        String RootDir = Environment.getExternalStorageDirectory()
                + File.separator + "Photography";
        /*String RootDir = context.getCacheDir()
                + File.separator + "Photography";*/
        File RootFile = new File(RootDir);
        RootFile.mkdir();
        // File root = Environment.getExternalStorageDirectory();
        URL u = new URL(fileURL);
        System.setProperty("http.keepAlive", "false");
        HttpURLConnection c = (HttpURLConnection) u.openConnection();
        //Open a connection to that URL.
        //URLConnection c = u.openConnection();
        c.setUseCaches(false); 
        c.setDoInput(true); 

        c.setRequestMethod("POST");
        c.setDoOutput(true);
        c.connect();
        int contentByte=c.getContentLength();
        FileOutputStream f = new FileOutputStream(new File(RootFile,
                "temp"+fileName));
        //f=openFileOutput("temp"+fileName, context.MODE_PRIVATE);
        InputStream in = c.getInputStream();

        BufferedInputStream inStream = new BufferedInputStream(in, 1024 * 10);

        byte[] buffer = new byte[10 * 1024];
        int len1 = 0;

        while ((len1 = inStream.read(buffer)) != -1) {                          
            f.write(buffer, 0, len1);  
            Log.d("file data", buffer.toString()+",value of progressBarStatus"+progressBarStatus);
            progressBarStatus+=(len1*100.0)/(contentByte)+0.0;
            progressBarHorizontal.setProgress((int)progressBarStatus);
            progressBar2.setProgress((int)progressBarStatus);

            if(isTaskCancelled)
            {
                failToDownload=1;
                break;
            }
        }  
        f.flush();
        f.close();
        inStream.close();
    } catch (Exception e) {
        Log.d("Error....", e.toString());
        e.printStackTrace();
        failToDownload=1;
    }
}

如果有任何建议,那么最好来。谢谢

【问题讨论】:

    标签: video-streaming download android-videoview


    【解决方案1】:

    我发现无法使用手动代码下载很长的视频,我们必须在此处使用下载管理器我分享了链接,这有助于我完成任务

    https://stackoverflow.com/a/3028660/358107

    【讨论】:

    • 给和。与你的阙有关。 !
    • 由于视频大小,由于网络速度低等任何原因,我们失去了一段时间的服务器连接,我们无法下载,所以我们使用库来下载他们管理我们需要的所有视频,我分享了链接使用我解决了我的问题。
    猜你喜欢
    • 2018-03-11
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    相关资源
    最近更新 更多