0

我的应用程序需要在不同时间从服务器下载大量视频,我想知道是否有办法下载视频数据并将其存储以供以后播放?我最初下载了视频数据并将其存储到 NSData(见下文)中,但这不能在 MPMoviePlayerController 中使用。

NSString *imageURL = [NSString stringWithFormat:@"%@%@",@"http://wildknowledge.co.uk",[mapPoint objectForKey:@"videopath"]];

[mapPoint setObject:[NSData dataWithContentsOfURL:[NSURL URLWithString:[imageURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] forKey:@"videopath"];

然后我认为我可以使用以下内容设置 URL 以供以后使用:

NSString *imageURL = [NSString stringWithFormat:@"%@%@",@"http://wildknowledge.co.uk",[mapPoint objectForKey:@"videopath"]];

NSURL *movieURL = [[NSURL alloc] initFileURLWithPath:imageURL];
[mapPoint setObject:movieURL forKey:@"videopath"];

但显然 NSURL 只存储一个完整的 url 位置,而不是该位置的数据,所以在播放视频时,它必须首先缓冲它,这是我不想要的。

那么谁能告诉我如何存储来自 NSURL 的数据以供以后使用?

4

1 回答 1

1

如果我是你,我会使用NSFileHandle读取电影块并将它们直接保存到文件系统。这样您就不会将电影保存在内存中,因此您的应用程序不会因为您永远不会超过可用内存而崩溃。

当我不得不下载一个大数据库(>700MB)时,我在应用程序中使用了这种方法,并且效果很好。但是,根据电影大小,您可能需要添加验证机制以确保传输成功,例如 md5 校验和。

于 2012-12-19T16:57:21.763 回答