gpt4 book ai didi

下载时来自在线的 Android mp4 视频损坏

转载 作者:行者123 更新时间:2023-11-29 22:28:00 25 4
gpt4 key购买 nike

我正在开发一个循环播放视频文件的应用程序。到目前为止,我只是安装设备并将视频文件复制到 SD 卡上,然后使用文件路径在我的 VideoView 上启动它。我正在尝试实现一种可以远程更新它播放的视频的方法,因此我已经开始在线存储我的视频。在应用程序中,我会检查本地副本并下载它是否不存在,或者是否有更新的副本。我已经在两个不同的视频文件上测试过它,都是 .mp4。下载其中一个后第一次播放但在尝试再次开始循环时它告诉我无法播放视频。另一个甚至不会第一次播放,它只是给我一个对话框,说视频无法播放。如果我通过 USB 数据线将这两个文件复制到 SD 卡上,那么这两个文件都可以在我的应用程序中正常工作。如果我退出我的应用程序并使用其他东西(保管箱)手动下载它们,它们就会工作,但如果我从我的应用程序中下载它们,它们就不会工作。这是我用来下载文件的代码:

public static void DownloadFromUrl(String fileName) {  //this is the downloader method
try {
URL url = new URL("http://dl.dropbox.com/u/myfile.mp4");
File file = new File(PATH + fileName);
long startTime = System.currentTimeMillis();
Log.d(myTag, "download begining");
Log.d(myTag, "download url:" + url);
Log.d(myTag, "downloaded file name:" + fileName);


/* Open a connection to that URL. */
URLConnection ucon = url.openConnection();
Log.i(myTag, "Opened Connection");

/*
* Define InputStreams to read from the URLConnection.
*/
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Log.i(myTag, "Got InputStream and BufferedInputStream");
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
Log.i(myTag, "Got FileOutputStream and BufferedOutputStream");
/*
* Read bytes to the Buffer until there is nothing more to read(-1).
*/

int current = 0;
Log.i(myTag, "About to write");
while ((current = bis.read()) != -1) {
bos.write(current);
}



fos.close();
Log.d(myTag, "download ready in"
+ ((System.currentTimeMillis() - startTime))
+ " sec");
} catch (IOException e) {
Log.d(myTag, "Error: " + e);
}
}

我知道此代码段中的保管箱 url 不正确我只为这篇文章更改了它,在我的应用程序中 url 正确指向一个文件。创建文件时使用的变量 PATH 设置在此代码段之外的代码中。

此代码 fragment 是否有可能破坏我的 mp4 文件的内容?

最佳答案

那个方法以某种方式破坏了文件,我仍然不太确定如何,但我改变了它的一部分,现在它被修复了。

我现在正在使用这个:

        byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = bis.read(data)) != -1) {
total += count;
fos.write(data, 0, count);
}

fos.flush();
fos.close();

而不是旧的 while 循环,它工作正常。

关于下载时来自在线的 Android mp4 视频损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com