介绍
我目前正在对一个Vimeo风格的应用程序进行一些错误修复,即用户可以从手机或iPad录制视频,然后将视频上传给其他用户观看。由于我们现在处理上传的方式,当前的问题与上传大文件有关。
问题
所以问题本质上是当上传文件到服务器时,我们首先将所有必须上传的字节分配在一个NSData对象中。然后,这个字节串将附加到标准 HTTP Post 消息,然后接收 API 将处理它。问题在于,对于大文件(视频很快),应用程序将简单地崩溃,因为 NSData 对象在 iDevice 上占用了太多内存。
这是该过程的工作方式:
Byte *buffer = malloc(content.defaultRepresentation.size);
NSUInteger buffered = [content.defaultRepresentation getBytes:buffer fromOffset:0.0 length:content.defaultRepresentation.size error:nil];
NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered];
NSData *movieData = [NSData dataWithData:data];
我只是从保存在 iPhone 或 iPad 的标准相机胶卷中的视频中获取字节。然后我将这些字节放入一个 NSData 对象中。然后,来自这个 NSData 对象的字节串将被简单地附加到一个简单的 HTTP post 消息并发送到 API。
问题
那么问题是,我看到的问题是整个字节字符串必须在单个 HTTP Post 消息中发送。那么有什么方法可以加载电影文件的块并将其附加到帖子消息中,这样就不会一次占用太多内存?或者你怎么能这样做?
感谢您的时间 :)