我有一个与 Amazon S3 相关的项目,下载 50MB 以上的大文件。它没有错误地停止,由于它的数据文件很大,我将文件分块到较小的内存中并同时下载。当我以正确的顺序将块数据附加到单个 [NSMutableData] 中时,视频将无法播放。关于这个相关主题的任何想法?
请帮助我,我在这个项目的整个星期都坐在我的屁股 T_T ..
我有一个与 Amazon S3 相关的项目,下载 50MB 以上的大文件。它没有错误地停止,由于它的数据文件很大,我将文件分块到较小的内存中并同时下载。当我以正确的顺序将块数据附加到单个 [NSMutableData] 中时,视频将无法播放。关于这个相关主题的任何想法?
请帮助我,我在这个项目的整个星期都坐在我的屁股 T_T ..
您需要做的是首先创建一个适当大小的文件。每个下载器对象都必须知道文件中的偏移量以放置数据,它应该在出现时写入数据,而不是存储在可变数据对象中。所以这会大大降低这个操作的内存占用。
还有第二个组件:您必须设置打开文件的 F_NOCACHE 标志,以便 iOS 不会将文件写入保存在其缓存中。
有了这两者,它应该可以正常工作。在开发过程中还要使用很多断言,以便您在出现故障时尽快知道 - 这样您就可以纠正任何问题。
您不应该只使用 RAM 内存来管理这么多的数据。
您宁愿使用此处说明的辅助内存(即 NSFileManager) 当您完成下载文件后,正常播放。如果您确定用户不再需要它,只需在播放后立即将其删除。
[编辑]
或者,您也可以直接使用 MPMoviePlayerController 指向该 URL。