如何在iOS上传大视频?

San*_*ush 5 iphone memory-management ios

我正在开展一个项目,我必须将大型视频上传到服务器.我试图将视频保存在一个变量中.我目前正在使用下面的代码.

NSData *data=[NSData dataWithContentsOfFile:self.path];
Run Code Online (Sandbox Code Playgroud)

它适用于小视频.但是当视频超过200-500 MB时,我的应用程序崩溃了.我在变量中保存视频,以便为不同的社交网站和Dropbox提供上传功能.

我得到的消息是由于内存错误而终止.

请指教.我怎样才能做到这一点.

编辑

我必须在NSData中保存视频,因为我需要通过API在不同的社交网站上传视频,例如Facebook,Dropbox,Google Drive等.API使用NSData来保存视频的二进制数据.所以我相信我不能在这里使用AFNetworking,NSInput Stream或任何其他机制.

MrT*_*rTJ 0

您不能也不想在内存中保存数百 MB。这不是上传视频的方式。首先我建议您配置视频录制参数,这样即使视频质量较低,生成的文件也会较小。您的用户不会想要上传 2-500 MB 的文件。但即便如此,生成的文件仍然太大,无法“从内存”上传。您应该读取其中的一小部分,例如 100kByte,将其上传到服务器,读取下一部分,上传,等等。

幸运的是,您已经为此准备好了解决方案。如果您必须仅支持 iOS 7,请查看NSURLSessionUploadTask. 如果您还必须支持旧版本,最简单的方法可能是使用 AFNetworking。查看此页面上的“多部分请求”:http://cocoadocs.org/docsets/AFNetworking/2.1.0/